Тестирование нагрузки с помощью AB... фальшивых неудачных запросов (длина)

Чтобы выполнить некоторое нагрузочное тестирование, для моего собственного любопытства, на моем сервере я побежал:

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. Я не могу понять это.

По мере запуска теста я смог полностью получить доступ к своему веб-сайту с моего домашнего компьютера, хотя время загрузки страниц в нижней части страницы было указано как .5 вместо обычного .02. Однако у меня никогда не было неудачного запроса.

Итак, почему AB сообщает, что половина соединений не работает? А что означает "длина:" в этом контексте?

Спасибо

Ответ 1

Nevermind. "Сбой длины" просто указывает, что примерно в половине случаев длина ответа различна.

Поскольку содержимое является динамическим, вероятно, это идентификатор сеанса или что-то в этом роде.

Ответ 2

Чтобы описать проблему другими словами:

Средство бенчмаркинга apache (ab) предполагает, что длина содержимого ответа будет одинаковой во время всего теста. Он сохраняет длину содержимого первого ответа. Если какой-либо из последующих ответов имеет разную длину контента, они приводят к "ошибкам длины".

Следующий отчет об ошибке apache, похоже, подтверждает, что: ASF Bug 42040

Сводка. Если вы обслуживаете любой контент переменной длины, вы, вероятно, должны игнорировать этот вид сбоев запроса ab.

Изменить. Недавно я заметил, что команда ab имеет новую (по крайней мере для меня) опцию:

-l   Accept variable document length (use this for dynamic pages)

Я могу видеть это в ab версии 2.3 < $Revision: 1528965 $ > но не может видеть его в версии Версии 2.3 < $Revision: 655654 $ > , поэтому он, вероятно, был добавлен относительно недавно.

Ответ 3

Извините, что повторно задал старый вопрос, но это было первое, что появилось в Google. Иногда ошибка длины, сообщаемая ab, может быть вызвана реальной проблемой: если соединение закрыто на стороне сервера до того, как клиент не получил общее количество байтов, объявленных в заголовке Content-Length. Это может произойти, если между клиентом и сервером существуют другие стороны, например, наивные балансировочные балансиры ручной работы (мой случай).