내 호기심을 위해 내 서버에서로드 테스트를 수행하기 위해 다음을 실행했습니다.
ab -kc 50 -t 200 http://localhost/index.php
이렇게하면 200 초 동안 50 개의 연결 유지 연결이 열리고 index.php 요청으로 서버가 다운됩니다.
결과는 다음과 같습니다.
Concurrency Level: 50
Time taken for tests: 200.007 seconds
Complete requests: 33106
Failed requests: 32951
(Connect: 0, Receive: 0, Length: 32951, Exceptions: 0)
Write errors: 0
Keep-Alive requests: 0
Total transferred: 1948268960 bytes
HTML transferred: 1938001392 bytes
Requests per second: 165.52 [#/sec] (mean)
Time per request: 302.071 [ms] (mean)
Time per request: 6.041 [ms] (mean, across all concurrent requests)
Transfer rate: 9512.69 [Kbytes/sec] received
32951 “실패한”요청에 유의하십시오. 나는 이것을 알아낼 수 없다.
테스트가 실행되면서 페이지 하단의 페이지로드 시간이 일반적인 .02 대신 .5로보고되었지만 홈 컴퓨터에서 웹 사이트에 완벽하게 액세스 할 수있었습니다. 그러나 한 번도 실패한 요청이 없었습니다.
그렇다면 AB는 왜 연결의 절반이 실패했다고보고합니까? 그리고 그 맥락에서 “길이 :”는 무엇을 의미합니까?
답변
신경 쓰지 마. “길이 실패”는 단지 응답 길이의 약 절반이 다른 것을 나타낸다.
내용은 동적이기 때문에 아마도 세션 식별자 또는 이와 유사한 것일 수 있습니다.
답변
다른 말로 문제를 설명하려면 :
아파치 벤치마킹 도구 (ab)는 전체 테스트에서 응답 내용의 길이가 동일하다고 가정합니다. 첫 번째 응답의 컨텐츠 길이를 저장합니다. 추가 응답의 내용 길이가 다른 경우 “길이 실패”가 발생합니다.
다음 아파치 버그 보고서는 다음을 확인하는 것으로 보입니다. ASF 버그 42040
요약 : 가변 길이의 컨텐츠를 제공하는 경우 이러한 종류의 ab 요청 실패를 무시해야합니다.
편집 : 최근에 ab
명령에 새로운 (적어도 나를 위해) 옵션이 있음을 알았습니다 .
-l Accept variable document length (use this for dynamic pages)
나는 그것을 볼 수있는 AB 버전 2.3 <$는 수정 : 1,528,965 $> 하지만 그것을 볼 수 없습니다 AB 버전 2.3 <$는 수정 : 655,654 $> , 그래서 아마 비교적 최근에 추가되었습니다.
답변
오래된 질문을 되새겨 서 죄송하지만 Google에서 처음으로 나타나는 질문이었습니다. 때때로 ab에 의해보고 된 길이 오류는 실제 문제로 인해 발생했을 수 있습니다. Content-Length 헤더에 선언 된 총 바이트 수가 클라이언트에 의해 수신되기 전에 연결이 서버 측에서 닫힌 경우. 예를 들어 순진한 수제로드 밸런서 (내 경우)와 같이 클라이언트와 서버 사이에 다른 당사자가있는 경우 발생할 수 있습니다.