Это означает один тест с общим количеством 100 запросов, при котором все 20 запросов остаются открытыми. Я думаю, что у вас неправильное представление о том, что все запросы занимают одинаковое количество времени, чего практически никогда не бывает. Вместо того чтобы выдавать запросы партиями по 20, ab просто начинает с 20 запросов и выдает новый каждый раз, когда завершается существующий запрос.
Например, тестирование с ab -n 10 -c 3
будет начинаться с 3 одновременных запросов:
[1, 2, 3]
Допустим, # 2 заканчивается первым, ab заменяет его четвертым:
[1, 4, 3]
... тогда # 1 может закончить, заменить на пятую:
[5, 4, 3]
... Затем # 3 заканчивается:
[5, 4, 6]
... и т. Д., Пока не будет выполнено 10 запросов. (После выполнения запросов 8, 9 и 10 параллелизм, конечно, сужается до 0).
Имеет смысл?
Что касается вашего вопроса о том, почему вы видите результаты с большим количеством сбоев, чем общее количество запросов ... Я не знаю ответа на этот вопрос. Я не могу сказать, что видел это. Можете ли вы опубликовать ссылки или контрольные примеры, которые показывают это?
Обновление: при просмотре источника , ab отслеживает четыре типа ошибок, которые подробно описаны ниже строки "Failed request: ...":
- Connect - (
err_conn
in source) Увеличивается, когда ab не может установить соединение HTTP
- Прием - (
err_recv
в источнике) Увеличивается, когда ab не удается, чтение соединения не удается
- Длина - (
err_length
в источнике) Увеличивается, когда длина ответа отличается от длины первого полученного хорошего ответа.
- Исключения - (
err_except
в источнике) Увеличивается, когда ab видит ошибку при опросе сокета соединения (например, соединение прерывается сервером?)
Логика, когда это происходит и как они подсчитываются (и как отслеживается общее число bad
), по необходимости, немного сложна. Похоже, что текущая версия ab должна рассчитывать сбой только один раз за запрос, но, возможно, автор этой статьи использовал предыдущую версию, которая почему-то считала более одной? Это мое лучшее предположение.
Если вы можете воспроизвести поведение, определенно сообщите об ошибке .