2013-08-05 2 views
5

PHP/MySQL REST API에 요청을 프록시하는 NGinx/Node/Express3/Socket.io/Redis/Backbone/Backbone.Marionette 응용 프로그램이 있습니다. 스택 전체를 전체적으로로드 할 필요가 있습니다.백본 응용 프로그램로드 테스트

내 앱은 NGinx와 정적 자산 캐싱을 활용하고, 노드/익스프레스로 클러스터링하고 소켓은 Redis를 사용하여 멀티 코어를 지원합니다. 말하자면, 나는 많은 어려움을 겪어 그것이로드에 견딜 수 있는지 확인하려고 노력했습니다.

blitz.io를 사용하여 10 초 만에 50,000 명의 사용자와 충돌했는데 깜박 거리지 않았습니다 ... 충돌을보고 싶거나 적어도 조금 호흡하기 때문에 나를 걱정했습니다. 하지만 50k는 당신이 도구로 그걸 던질 수있는 최대 값이었습니다. 그들은 나에게 당신이 합리적으로 그 일을 처리 할 수 ​​있거나 필요로하지 않을 것이라고 기대한다고 말했습니다 ... 실제로 그것이 발생하지 않았다는 것을 깨달았을 때입니다. 로드가 페이지가로드되고 백본 앱이 시작된 후 시작되어 소켓 연결을 시작하고 다른 서버의 올바른 REST API 끝점에서 데이터를 요청하기 때문에로드가 예상됩니다. 나는 전체 전체 응용 프로그램을 테스트로드 할 수있는 방법

:

그래서, 여기에 내 질문? 나는 같은 방법으로 서버를 세금을 부하 테스트를해야한다는 것을 의미 클라이언트 실제로 것입니다 :

  1. 요청 내 Nginx의/노드/Express 서버에서 단일 페이지 백본 응용 프로그램
  2. 킥 오프 요청
  3. REST API (다른 서버에서 실행되는 PHP/MySQL)에 대한 요청 시작
  4. NGinx에서 실행되는 정적 인 자산 (NGinx/노드/익스프레스, Redis를 사용하여 멀티 코어 정크를 처리)

테스트 도구에서 브라우저와 유사한 환경을 사용하여 페이지를로드하고 JS를 파싱 한 다음 실행하면 모든 것이 copasetic (NGinx/Node/Express 서버에 충돌하므로 PHP/MySQL 서버가됩니다) . 그렇지 않으면 테스트 도구는 적어도 12 가지 종류의 요청을 거의 동시에 실행하여이를 시뮬레이트해야합니다. 그렇지 않으면 10,000 시간 (즉, 무의미 함)으로보고 문을 스트레스 테스트하는 것과 같습니다.

내 응용 프로그램이 동일한 페이지를로드하는 분당 1,000 명의 사용자를 처리 할 수 ​​있도록해야합니다.

+2

우선 - 재미있는 질문입니다. 자, 내가 물어볼 수 있다면 - 너는 무엇을 시험하고 있는가? 테스트 환경은 프로덕션 환경과 동일한 스펙을 가집니까? 단순히 아파치 벤치 같은 물건으로 테스트하면 훨씬 잘 돌아 가지 않습니다. 내 최선의 제안은 무리의 사용자로부터 실제 클라이언트 트래픽을 포착하고 더 이상 처리하지 않을 때까지 VM의 앱으로 릴레이하는 것입니다.병목 현상을 발견하기 위해 그렇게했습니다. 매우 도움이됩니다. –

+0

eheh ... 그래서 부끄러운 줄 알지만 환경은 테스트 환경이기도합니다. 이 사이트는 아직 살아 있지 않습니다 (라이브 컨퍼런스의 지원 대시 보드의 기능을하는 1 회용 앱)이며 1 년에 3 일 동안 만 라이브로 제공됩니다. 따라서 3 일 동안 QA/DEV를 사용하면 3 일 동안 생산성이 향상됩니다. – cmcculloh

+0

클라이언트 응용 프로그램을 설정하는 것은 서버를 테스트하는 것만큼이나 많은 것처럼 보입니다. 단일 (수동 실행) 세션에서 생성 된 모든 HTTP 요청 (HTML, 스크립트 및 CSS로드 호출 포함)을 기록하고 해당 순서를 천 번 병렬로 재생할 수없는 이유는 무엇입니까? –

답변

1
당신이 말했듯이 나는 것과 같은 방식으로 서버를 세금을 부하 테스트가 필요합니다 "이 튜토리얼 https://www.youtube.com/watch?v=8NLeq-QxkSw

를 참조 당신은 그것으로 을 스트레스 테스트를 수행 할 수 있습니다 아파치 JMeter를 http://jmeter.apache.org/ 를 사용하는 방법을 배우게한다

고객은 실제로 "

입니다. 즉, 사용중인 기술에 대해 테스트가 불가지론 함을 의미합니다.

저는 Jmeter를 강력히 권장합니다. 널리 사용되며 Jenkins와 통합하여 멋진 것들을 많이 할 수 있습니다.

관련 문제