6

EC2에 관한 두 가지 질문 ELB :EC2 ELB 성능 문제

먼저 JMeter 테스트를 올바르게 실행하는 방법입니다. 나는 다음을 찾았습니다. http://osdir.com/ml/jmeter-user.jakarta.apache.org/2010-04/msg00203.html, 기본적으로 -Dsun.net.inetaddr.ttl = 0으로 JMeter를 시작할 때 (쉬운) 설정하고 두 번째 점은 요청 당 ip가 아닌 라우팅입니다. 따라서 jmeter 인스턴스 팜을 시작하는 것에서부터 나는 그걸 해결하는 방법을 알지 못합니다. 어떤 아이디어가 환영입니까, 아니면 아마도 내가 설명을 잘못 읽고 있습니다 (?)

또한 웹 서비스에서 서버 쪽에서 Java의 다른 웹 서비스 (및 ELB 뒤에있는)를 호출하므로 저는 HttpClient를 사용하고 있으며 MultiThreadedHttpConnectionManager입니다. 연결 관리자에서 값을 호스트하기 위해 일부 큰 __LI_ 경로를 제공합니다. 그리고 연결이 캐시되기 때문에로드 밸런싱 동작을 깨뜨리는 지 궁금합니다 (또한 요청이 모두 동일한 시스템에서 발생 함). 매번 새로운 HttpClient (절름발이)를 사용하도록 전환 할 수 있지만 모든 요청이 적은 수의 호스트에서 발생한다는 사실을 알지 못합니다.

Backstory : EC2에서 ELB를 사용하여 서비스를 테스트하는 중입니다. 트래픽이 균등하게 분산되지 않습니다 (1-2 개의 노드에 대한 대부분의 트래픽, 1 개의 노드에 거의 트래픽 없음, 전혀 트래픽이 없음). 제 4 노드). 그래서 위의 문제는 제가 확인한 범인입니다.

답변

1

나는 아주 simular 문제가있었습니다. 한 가지는 ELB가 폭발 하중 하에서 잘 확장되지 않는다는 것입니다. 따라서 테스트를 시도 할 때 즉시 확장되지 않습니다. 그것이 위로 올라 가기 위해서는 많은 시간이 필요합니다. 또 다른 단점은 DNS 조회로 CNAME을 사용한다는 사실입니다. 이것만으로도 당신의 속도가 느려질 것입니다. 조사 할 수있는 성능 문제가 더 있습니다.

내 추천은 haproxy를 사용하는 것입니다. 당신은 훨씬 더 많은 통제권을 가지며, 당신은 그 성과를 좋아할 것입니다. 나는 그 일에 매우 만족해했다. 중복 된 서버를 설치하기 위해 하트 비트를 사용하며 나는 기쁜 마음입니다.

또한 ELB를 사용하여 SSL을 수행하려는 경우 성능이 파 미만임을 발견하여 더 많은 고통을 받게됩니다.

몇 가지 도움이 되길 바랍니다. AWS는 ELB로드 테스트가 실제로 작동하지 않는다고 개인적으로 말했고 많은 양의로드로 시작할 계획이라면 사전에 확장 할 수 있도록 알려줄 필요가 있습니다 .

+0

로드 중 많은 수를 계산하고 있지만 150-200 QPS의 REST API, SSL이 아닌지 확실하지 않습니다. ELB 자체의 확장을 기대하지는 않습니다 (ELB가 150QPS를 처리 할 수 ​​있기를 희망합니다). 그러나 시간을 늘리지 않고 상자 전체에 부하가 고르게 분산 될 것으로 기대합니다. 당신은 그것에 대해 논평 할 수 있습니까? – Kevin

+0

예. 나는 똑같은 문제가 있었고, 당신이 필요로 할 때만 부하가 분산되어 있다고 생각합니다. ELB는 이것을 할 때 일관성이없는 것처럼 보입니다. 나는 당신이 haproxy를 볼 것을 다시 한번 권고 할 것이다. 그것은 당신이 필요로하는 것에 더 가까운 라운드 로빈 분배를 할 수있는 선택권을 가지고있다. 나는 AWS 서비스를 정말로 좋아하지만 ELB의 블랙 박스는 IMO를 관리하기에는 너무 어렵다. – chantheman

+0

하나의 IP에서 모든로드를 전송하는 경우로드 분산에 문제가 발생할 수도 있습니다. – chantheman

1

실행중인 jmeter 인스턴스의 수는 말할 필요가 없지만, 경험상 2 배의 비율로 확장해야합니다. 그럼에도 불구하고 불균형 적 부하를 보게 될 것입니다. 부하가 백 엔드 함대 전체에 정확히 정확하게 맞춰지는 것은 매우 드문 일입니다.

다른 지역에서 jmeter 인스턴스를 실행하면 도움이 될 수 있습니다.

또 다른 요소는 테스트 기간입니다. ELB는 규모 확장에 약간의 시간이 걸립니다. 일반적으로 ELB 이름에 대해 nslookup을 실행하면 실행중인 인스턴스 수를 알 수 있습니다. 스케일링 패턴을 이해하고 그 주위의 테스트를 빌드하십시오. (따라서 ELB 풀에 다른 인스턴스를 추가하는 데 20 분이 걸리면 테스트에 웜업까지 25-30 분을 포함 시키십시오.) 필요한 경우 AWS에 ELB 풀을 "예열"하도록하십시오.

ELB 풀 크기가 테스트에 충분하고 테스트 실행 중에 풀이 변경되지 않는다는 것을 확인할 수있는 경우 ELB IP에 대해 직접 테스트를 실행 해보십시오. 즉, 수동으로 트래픽 균형을 조정하십시오.

전화의 두 번째 단계에서 어떤 일이 일어날 지 확신 할 수 없습니다. 연결을 열고 다시 사용하는 경우 분명히 닫지 않고 인스턴스간에 확장 할 수있는 방법이 없습니다. & 연결을여십시오. 이 호출은 동일한 서버 세트 또는 다른 세트에서 실행됩니까? 내부 ELB를 만들고 해당 끝점을 사용하여 연결할 수 있지만 설명 된 시나리오에서 도움이 될지 잘 모르겠습니다.