Чтобы сделать нагрузочное тестирование, для моего собственного любопытства, на моем сервере я запустил:
ab -kc 50 -t 200 http://localhost/index.php
Это открывает 50 активных соединений на 200 секунд и просто загружает мой сервер запросами на 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 «неудачные» запросы. Я не могу понять это.
Когда тест проходил, я смог получить доступ к своему веб-сайту с домашнего компьютера, хотя время загрузки страницы в нижней части страницы составляло 0,5 вместо обычного 0,02. Однако у меня никогда не было неудавшегося запроса.
Так почему же AB сообщает, что половина соединений не работает? И что означает «Длина:» в этом контексте?
benchmarking
load-testing
apachebench
Вениамин
источник
источник
Ответы:
Неважно. «Ошибка длины» просто указывает, что примерно в половине случаев длина ответа была другой.
Поскольку содержимое является динамическим, это, вероятно, идентификатор сеанса или что-то в этом роде.
источник
Чтобы описать проблему другими словами:
Инструмент тестирования Apache (ab) предполагает, что длина содержимого ответа будет одинаковой в течение всего теста. Здесь хранится длина содержимого первого ответа. Если какой-либо из дальнейших ответов имеет различную длину содержимого, они приводят к «ошибкам длины».
Следующий отчет об ошибках Apache, кажется, подтверждает, что: ASF Bug 42040
Резюме : если вы обслуживаете какое-либо содержимое переменной длины, вам, вероятно, следует игнорировать такого рода ошибки ab-запроса.
Изменить : я недавно заметил, что у
ab
команды есть новая (по крайней мере для меня) опция:Я вижу его в ab версии 2.3 <$ Revision: 1528965 $>, но не вижу его в ab версии 2.3 <$ Revision: 655654 $> , поэтому он, вероятно, был добавлен относительно недавно.
источник
Извините, что воскресил старый вопрос, но он появился первым в Google. Иногда ошибка длины, о которой сообщает ab, может быть вызвана реальной проблемой: если соединение закрыто на стороне сервера до того, как клиент не получит общее количество байтов, объявленных в заголовке Content-Length. Это может произойти, если между клиентом и сервером существуют другие стороны, например, наивные подсистемы балансировки нагрузки (мой случай).
источник