Нагрузочное тестирование с AB ... поддельные неудачные запросы (длина) - PullRequest
195 голосов
/ 24 февраля 2009

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

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 сообщает, что половина соединений не работает? И что означает «длина:» в этом контексте?

Спасибо

Ответы [ 3 ]

345 голосов
/ 24 февраля 2009

Nevermind. «Ошибка длины» просто указывает, что примерно в половине случаев длина ответа была другой.

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

118 голосов
/ 11 октября 2011

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

Инструмент тестирования Apache (ab) предполагает, что длина содержимого ответа будет одинаковой в течение всего теста. Хранит длину содержимого первого ответа. Если какой-либо из дальнейших ответов имеет различную длину содержимого, они приводят к «ошибкам длины».

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

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

Редактировать : Я недавно заметил, что у команды ab есть новая (по крайней мере для меня) опция:

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

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

7 голосов
/ 24 сентября 2013

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

...