성능 테스트 LAMP-Cluster - 병목 현상을 찾는 방법은 무엇입니까?

성능 테스트 LAMP-Cluster - 병목 현상을 찾는 방법은 무엇입니까?

로드 밸런싱을 수행하는 HAProxy를 사용하여 LAMP 애플리케이션을 실행하는 3개 노드의 클러스터를 설정했습니다. 이제 시스템을 최적화하고 로드 테스트하고 싶습니다. 따라서 독일의 전용 데이터 센터에 있는 클러스터에 대해 jmeter 테스트를 실행하는 아일랜드 지역에서 15개의 AWS-t1.micro 인스턴스를 실행하는 jmeter-ec2를 노래하지 않습니다.

문제는 서버가 0.5 로드로 거의 작동하지 않는 반면 jmeter는 약 70 tps만 보고한다는 것입니다. 이제 병목 현상이 발생하는 위치와 시스템이 더 많은 tps를 제공하지 않는 이유가 무엇인지 궁금합니다.

서비스를 하나씩 조정하기 위해 이 문제에 접근하는 방법에 대한 도움을 찾고 있습니다. 기본 구성 설정을 사용하여 앱을 제공하기 위해 MySQL Galera, Apache, NginX 및 Solr이 실행되고 있습니다. 클러스터는 32GB RAM과 기가비트 LAN을 통해 상호 연결된 쿼드 XEON CPU를 갖춘 3개의 새로운 베어 메탈 노드로 구성됩니다.

시스템을 체계적으로 조정/구성하는 방법에 대한 유용한 정보를 제공해 주셔서 미리 감사드립니다.

답변1

병목 현상을 찾으려면 시스템의 일부를 제거해 보십시오. 15개의 테스트 서버는 정말 많은 것 같습니다! 단일 테스트 장치에서 1000개의 TPS를 얻을 수 있어야 합니다. HAProxy에게 응답을 기다리라고 요청하는 것이 아닙니다. 즉, maxconns 기능과 대기열 기능을 활용하고 있습니까? 앞서 말했듯이 단순화해 보세요. 하지만 HAProxy라고 생각된다면 구성을 게시해 주세요.

답변2

나는 테스트 클라이언트가 나에게 확실히 문제라고 생각합니다.

  1. t1.micro를 사용하고 있습니다. 그들은 기본적으로 무료이며 이유가 있습니다. 테스트를 위해 최소한 m3.medium, Large 또는 xlarge를 사용하도록 전환하세요. 완료되면 종료할 수 있습니다.

Amazon 문서의 의견T1 마이크로 인스턴스잘 요약합니다.

"파격적인 퍼포먼스",

"분당 10개의 요청을 지원하도록 설계되었습니다"

그러나 벤치마크의 경우 서버를 과도하게 사용하려고 합니다. 초당 수백 개의 요청을 원합니다. 이는 이것이 제공할 수 있는 것보다 조금 더 많은 것입니다.

  1. 테스트 클러스터는 테스트 클라이언트에 로컬이 아니므로 추가 대기 시간이 발생합니다. 귀하의 클러스터는 다른 국가에서 1600KM 떨어져 있습니다. 그것도 도움이 되지 않습니다. 그러니 3번 항목을 꼭 기억해두세요.

  2. 테스트 클라이언트가 다중 스레드로 실행되고 있는지 확인하십시오.

  3. 엔드포인트를 테스트하는 데 더 나은 선택인 EU(아일랜드) - eu-west-1을 사용합니다.

관련 정보