2012-06-06 6 views
1

프로덕션 서버에서 응답 시간에 대한 통계를 얻으려고합니다. ab -n100 -c1 "http://example.com/search?q=something"를 호출 할 때동시 요청이 있거나없는 ApacheBench의 결과가 다릅니다.

나는 다음과 같은 결과를 얻을 :

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  24 25 0.7  24  29 
Processing: 526 874 116.1 868 1263 
Waiting:  313 608 105.1 596 1032 
Total:  552 898 116.1 892 1288 

을하지만 ab -n100 -c3 "http://example.com/search?q=something"를 호출 할 때 그 결과는 훨씬 더 있습니다

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  24 25 0.8  25  30 
Processing: 898 1872 1065.6 1689 8114 
Waiting:  654 1410 765.5 1299 7821 
Total:  923 1897 1065.5 1714 8138 

사이트 생산에 있음을 고려하여, 그래서 요청이있다 내 말고도 동시성이없는 호출이 작은 동시성보다 훨씬 빠른 이유를 설명 할 수는 없습니다.

제안 사항?

답변

1

동시성이 1이라면 AB에이 URL에 최대한 빨리 도달하도록 한 스레드를 사용한다는 것을 의미합니다. 값 -c3은 AB에게 똑같은 일을시키지 만 3 개의 쓰레드를 사용하면 더 많은 양의 호출이 발생하게되어 상황에 따라 속도가 느려지는 것으로 보입니다. (참고 AB는 단일 스레드이므로 실제로 여러 os 스레드를 사용하지는 않지만 비유는 여전히 유효합니다.)

톨게이트에서 더 많은 레인을 갖는 것과 약간 비슷하지만 한 레인은 자동차를 그렇게 빠르게 처리 할 수 ​​있지만 세 개 더 많은 처리량을 얻으려는 차선. 그러나 터널의 너비가 몇 차선이든지 상관없이, 톨게이트가 처리량에 영향을 미치기도 전에 통과해야하는 자동차가있을 수 있습니다.

로드 테스트의 더 나은 방법은 응용 프로그램이 어떤 수준의 트래픽을 지원하는지 결정하는 것입니다.이 수준의 처리량을 생성하는 테스트를 지원하고 테스트 할 수 있습니다. AB를 좋아할 수있는만큼 빠르게 스레드를 실행하면 제어 된 테스트를 어렵게 만드는 경향이 있습니다. JMeter가 더 좋습니다.

또한, 위험성이 적은 그의 종류의 테스트 서버를 설정하는 것이 좋습니다.

관련 문제