AWS ELB 성능 체크시 결과 이상 문제 검토 요청

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

AWS ELB 성능 체크시 결과 이상 문제 검토 요청

plusu8274
안녕하세요.

현재 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





Reply | Threaded
Open this post in threaded view
|

Re: AWS ELB 성능 체크시 결과 이상 문제 검토 요청

junoyoon
Administrator
제가 봐도.. ELB 의 문제로 보입니다. 500 유저로 다시 해보시겠어요? 다시 TPS가 원래 수준으로 떨어지는 지 관찰할 필요가 있어 보입니다

그리고 보통 ELB가 Source Hashing 으로 트래픽을 분배하는지, 아니면 Sticky Session으로 하는지도 확인할 필요가 있을 듯 합니다.
Reply | Threaded
Open this post in threaded view
|

Re: AWS ELB 성능 체크시 결과 이상 문제 검토 요청

plusu8274
답변 감사합니다. 500유저로 다시 해본 결과인데 다시 원래 수준으로 떨어지는데요.



ELB 셋팅에서 stickiness 는 disable 되어 있습니다. ELB 담당자가 EC2 zone 이 서로 나뉘어 있고 각 1대씩 사용하고 있어서 sticky session 효과를 내고 있다고 하는데요. 그렇다면 기대했던 값이 나와야 하는데 좀 이상합니다. ngrinder script에서 확인 해볼만한 것들이 있을까요? 답변 부탁드리겠습니다.
Reply | Threaded
Open this post in threaded view
|

Re: AWS ELB 성능 체크시 결과 이상 문제 검토 요청

junoyoon
Administrator
스크립트에는 문제가 없어보이고. 해당 상황이 정확히 재현돼는 부분이라 이 문제는 ELB의 특성인듯 보입니다. 

2014년 3월 10일 월요일, plusu8274 [via ngrinder]<[hidden email]>님이 작성한 메시지:
답변 감사합니다. 500유저로 다시 해본 결과인데 다시 원래 수준으로 떨어지는데요.



ELB 셋팅에서 stickiness 는 disable 되어 있습니다. ELB 담당자가 EC2 zone 이 서로 나뉘어 있고 각 1대씩 사용하고 있어서 sticky session 효과를 내고 있다고 하는데요. 그렇다면 기대했던 값이 나와야 하는데 좀 이상합니다. ngrinder script에서 확인 해볼만한 것들이 있을까요? 답변 부탁드리겠습니다.



If you reply to this email, your message will be added to the discussion below:
http://ngrinder.642.n7.nabble.com/AWS-ELB-tp1362p1370.html
To start a new topic under ngrinder-user-kr, email <a href="javascript:_e(%7B%7D,&#39;cvml&#39;,&#39;ml-node%2Bs642n113h87@n7.nabble.com&#39;);" target="_blank">ml-node+s642n113h87@...
To unsubscribe from ngrinder-user-kr, click here.
NAML
Reply | Threaded
Open this post in threaded view
|

Re: AWS ELB 성능 체크시 결과 이상 문제 검토 요청

YoungWoo Kim
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가 구성됩니다.