2009-02-23 8 views
179

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

ab -kc 50 -t 200 http://localhost/index.php 

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

Thanks

+0

На вашем сайте имеется балансировщик нагрузки? См. Мое сообщение в блоге о [нагрузочном тестировании с балансировщиками нагрузки] (http://blog.browsermob.com/2009/02/tips-for-testing-with-load-balancers/), которые могут объяснить «это работает для меня», ситуация при нагрузочном тестировании. –

ответ

312

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

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

+6

Эй, я просто столкнулся с той же «проблемой» и рад, что этот ответ был здесь. Thanx! –

+1

Я тоже! Разве они не могут назвать это чем-то вроде «неудачи» !? – scotts

+2

Спасибо за ответ, у меня были точно такие же сомнения. – Saiyine

97

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

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

После апача сообщение об ошибке, кажется, подтверждает, что: ASF Bug 42040

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

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

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

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

+2

спасибо за опцию «-l» подсказка! – gue

+3

Для тех, кто на Mac, скорее всего, ваша версия ab отстает и -l не возьмет. Вы можете установить его из источника или через homebrew, но «brew install ab» не работает, потому что это часть пакета apache - вы можете установить с помощью «brew install homebrew/apache/ab». – netpoetica

5

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

 Смежные вопросы

  • Нет связанных вопросов^_^