안녕하세요.
현재 AWS EC2 + ELB를 사용하여 서비스를 하고 있는데, Ngrinder로 성능 측정시 결과가 이상하게 나오는 부분이 있어 문의 드립니다. (개인적인 생각은 ELB 문제로 판단되는데.. --;;) 동일한 script 를 가지고 단지 vuser 수만 변동하여 부하 측정을 해보았는데, 결과가 아래와 같이 예상과는 반대로 나오고 있습니다. 혹시 이런 현상을 보신 적이 있나요? 답변 부탁드리겠습니다. vuser 500 인 경우는 process 5 이고 thread 는 100 입니다. (TPS 67.2, MTT 2906.37, Err 0.28%) vuser 1000 인 경우는 process 5 이고 thread는 200입니다. 나머지 parameter는 동일합니다. script는 다음과 같이 구현하였습니다. (TPS 378.6, MTT 2302.76, Err 0%) class TestRunner: # initlialize a thread def __init__(self): grinder.statistics.delayReports=True pass # test method def __call__(self): # "Connection: Close" Header headers = [NVPair("Connection", "close")] testAddress = "XXX" result = request1.GET(testAddress, [], headers) error_check = 0 if json_format_check==1: try: json=JSONObject(result.getText()) except JSONException: grinder.logger.info("----------------------------URL data is not JSON form----------------------------") error_check=1 else: error_check=__keycheck__(self, json, file_json, 0, 0) if error_check == 0: error_check=__keycheck__(self, file_json, json, 1, 0) if result.getStatusCode() == 200 : grinder.statistics.forLastTest.success = 1 elif result.getStatusCode() in (301, 302) : grinder.logger.warn("Warning. The response may not be correct. The response code was %d." % result.getStatusCode()) grinder.statistics.forLastTest.success = 1 else : grinder.statistics.forLastTest.success = 0 if error_check==1: grinder.statistics.forLastTest.success = 0 |
Administrator
|
제가 봐도.. ELB 의 문제로 보입니다. 500 유저로 다시 해보시겠어요? 다시 TPS가 원래 수준으로 떨어지는 지 관찰할 필요가 있어 보입니다
그리고 보통 ELB가 Source Hashing 으로 트래픽을 분배하는지, 아니면 Sticky Session으로 하는지도 확인할 필요가 있을 듯 합니다. |
답변 감사합니다. 500유저로 다시 해본 결과인데 다시 원래 수준으로 떨어지는데요.
ELB 셋팅에서 stickiness 는 disable 되어 있습니다. ELB 담당자가 EC2 zone 이 서로 나뉘어 있고 각 1대씩 사용하고 있어서 sticky session 효과를 내고 있다고 하는데요. 그렇다면 기대했던 값이 나와야 하는데 좀 이상합니다. ngrinder script에서 확인 해볼만한 것들이 있을까요? 답변 부탁드리겠습니다. |
Administrator
|
스크립트에는 문제가 없어보이고. 해당 상황이 정확히 재현돼는 부분이라 이 문제는 ELB의 특성인듯 보입니다.
2014년 3월 10일 월요일, plusu8274 [via ngrinder]<[hidden email]>님이 작성한 메시지: 답변 감사합니다. 500유저로 다시 해본 결과인데 다시 원래 수준으로 떨어지는데요. |
In reply to this post by plusu8274
저도 회사에서도 AWS에서 성능테스트 시 ELB이슈가 있었습니다.
위에 언급하신 동일한 이슈는 아니지만 ELB는 아래와 같은 특성이 있다고 합니다. - ELB 최초 스펙은 낮은 단계에서 시작 - 요청이 들어옴에 따라 ELB가 점차 Auto Scale Up / Out되는 구조임 위와 같은 특성 때문에 성능테스트 시 생각했던 수치보다 낮은 TPS와 응답속도가 지연되는 현상등이 나오게 됩니다. 성능 Target을 EC2장비로 바로 부하를 주어서 성능 테스트를 하시는 것이 좋습니다. 만약 ELB 에 대해서 성능 테스트를 하시려면 오랜 시간 차츰 요청을 증가시키면서 테스트 하셔서 ELB가 충분히 Auto Scale Up, Out 되도록 하시면 됩니다. 만약 충분한 시간이 부족하시다면 AWS담당자에게 ELB에 대해서 Pre-Warm 요청을 하시면 됩니다. 요청하실 때는 ELB 최소 스펙이 초당 몇건을 처리하고, 1건 요청 사이즈가 얼마인지에 대한 정보를 보내시면 됩니다. Pre-Warm 요청을 하면 요청하신 신청부터 처리될 수 있도록 ELB가 구성됩니다. |
Free forum by Nabble | Edit this page |