Инструмент тестирования apache очень прост, и хотя он даст вам твердое представление о некоторой производительности, полагаться на него только в том случае, если вы планируете подвергать свой сайт серьезной нагрузке в процессе производства , - плохая идея.
Сказав это, вот самые распространенные и простые параметры:
-c
: ("Параллелизм"). Указывает, сколько клиентов (людей / пользователей) будут заходить на сайт одновременно. Во время запуска на сайт ab
будут заходить -c
клиенты. Это то, что на самом деле определяет степень нагрузки, которую ваш сайт будет испытывать во время теста.
-n
: Указывает, сколько запросов будет сделано. Это просто определяет продолжительность теста. Высокое -n
значение со -c
значением, которое может поддерживать ваш сервер, - хорошая идея, чтобы гарантировать, что что-то не сломается при длительном стрессе: поддерживать стресс в течение 5 секунд не одно и то же, чем в течение 5 часов.
-k
: Это делает браузеры "KeepAlive" по своей природе. Вам не нужно передавать значение, -k
поскольку оно «логическое» (то есть: оно указывает, что вы хотите, чтобы ваш тест использовал заголовок Keep Alive из HTTP и поддерживал соединение). Поскольку браузеры делают это, и вы, вероятно, захотите смоделировать стресс и поток, которые ваш сайт будет испытывать от браузеров, рекомендуется выполнить тест с этим.
Последний аргумент - это просто хозяин. По умолчанию он попадет в протокол http: //, если вы его не укажете.
ab -k -c 350 -n 20000 example.com/
Выполнив команду выше, вы попадете на http://example.com/ с 350 одновременными подключениями, пока не будет удовлетворено 20 тысяч запросов. Это будет сделано с помощью заголовка keep alive.
После того, как процесс завершит 20 тысяч запросов, вы получите отзыв о статистике. Это покажет вам, насколько хорошо сайт работал в условиях стресса, который вы ему оказали при использовании указанных выше параметров.
Чтобы узнать, сколько людей сайт может обслуживать одновременно, просто посмотрите, является ли время ответа (среднее, минимальное и максимальное время ответа, неудавшиеся запросы и т. Д.) Числами, которые ваш сайт может принять (разные сайты могут требовать разную скорость). Вы можете запускать инструмент с разными значениями -c, пока не дойдете до места, где вы скажете: «Если я увеличу его, он начнет получать неудавшиеся запросы и сломается».
В зависимости от вашего веб-сайта вы ожидаете среднее количество запросов в минуту. Это так сильно, что вы не сможете смоделировать это с помощью ab. Однако подумайте об этом так: если ваш средний пользователь будет выполнять 5 запросов в минуту, а среднее время ответа, которое вы считаете допустимым, составляет 2 секунды, это означает, что 10 секунд из минуты 1 пользователь будет выполнять запросы, то есть только В 1/6 случаев он попадает на сайт. Это также означает, что если у вас есть 6 пользователей, обращающихся к сайту с помощью ab одновременно, у вас, вероятно, будет 36 пользователей в моделировании, даже если ваш уровень параллелизма (-c) равен всего 6.
Это зависит от поведения, которое вы ожидаете от своих пользователей, использующих сайт, но вы можете получить это из «Я ожидаю, что мой пользователь выполнит X запросов в минуту, и я считаю среднее время ответа допустимым, если оно составляет 2 секунды». Затем просто измените свой -c level, пока вы не достигнете 2-х секунд среднего времени отклика (но убедитесь, что максимальное время отклика и stddev все еще действительны) и посмотрите, насколько большим вы можете сделать -c.
Надеюсь, я ясно это объяснил :) Удачи
-l
опцию, если страница имеет динамический контент, чтобы не получить кучу неудачных запросов из-за разницы в длине контента между запросами.Самый простой тест, который вы можете сделать, - выполнить 1000 запросов, по 10 за раз (что приблизительно имитирует 10 одновременных пользователей, получающих 100 страниц каждый - на протяжении всего теста).
-n 1000
количество запросов.-c 10
сообщает AB выполнять 10 запросов за раз вместо 1 запроса за раз, чтобы лучше моделировать одновременных посетителей (по сравнению с последовательными посетителями).-k
отправляетKeepAlive
заголовок, который просит веб-сервер не отключать соединение после выполнения каждого запроса, а вместо этого продолжать его повторно использовать.Я также отправляю дополнительный заголовок,
Accept-Encoding: gzip, deflate
потому что mod_deflate почти всегда используется для сжатия вывода text / html на 25% -75% - эффекты которого не следует игнорировать из-за его влияния на общую производительность веб-сервера (т. Е. может передавать вдвое больше данных за то же время и т. д.).Полученные результаты:
Для простейшей интерпретации игнорируйте все, НО эту строку:
Умножьте это на 60, и вы получите количество запросов в минуту.
Чтобы получить реальные результаты, вы захотите протестировать Wordpress вместо какого-то статического файла HTML или index.php, потому что вам нужно знать, как все работает вместе: включая сложный код PHP и несколько запросов MySQL ...
Например, вот результаты тестирования новой установки Wordpress в той же системе и среде WAMP (я использую WampDeveloper, но есть также Xampp, WampServer и другие) ...
Теперь это в 37 раз медленнее!
После нагрузочного теста вы можете сделать несколько вещей, чтобы улучшить общую производительность (количество запросов в секунду), а также сделать веб-сервер более стабильным при большей нагрузке (например, увеличение
-n
и-c
имеет тенденцию к сбою Apache), что вы можете прочитать здесь:Нагрузочное тестирование Apache с AB (Apache Bench)
источник
Шаги по настройке Apache Bench (AB) в Windows (рекомендуется IMO).
Шаг 1 - Установите Xampp.
Шаг 2 - Откройте CMD.
Шаг 3 - Перейдите к месту назначения apache bench (
cd C:\xampp\apache\bin
) из CMD.Шаг 4 - Вставьте команду (
ab -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://localhost:yourport/
)Шаг 5 - Подождите. Вы сделали
источник
Нагрузочного тестирования вашего API с использованием только ab недостаточно. Однако я думаю, что это отличный инструмент, который даст вам общее представление о производительности вашего сайта.
Если вы хотите использовать команду ab для тестирования нескольких конечных точек API с разными данными одновременно в фоновом режиме, вам необходимо использовать команду «nohup». Он запускает любую команду, даже когда вы закрываете терминал.
Я написал простой сценарий, который автоматизирует весь процесс, не стесняйтесь его использовать: http://blog.ikvasnica.com/entry/load-test-multiple-api-endpoints-concurrently-use-this-simple-shell-script
источник
Мне также было любопытно, могу ли я измерить скорость моего скрипта с помощью apache abs или скрипта измерения php построения / уничтожения или расширения php.
последние два мне не удались: они приблизительны. после чего подумал попробовать «аб» и «абс».
Команда "ab -k -c 350 -n 20000 example.com/" прекрасна, потому что все проще!
но кто-нибудь думал о "localhost" на любом сервере apache например www.apachefriends.org?
вы должны создать в корне папку, такую как «bench», где у вас есть 2 файла: test «bench.php» и ссылка «void.php».
а затем: сравните это!
bench.php
void.php
на рабочем столе вы должны использовать файл .bat (в Windows) следующим образом:
скамейка. летучая мышь
А теперь, если внимательно присмотреться ...
сценарий void не дает нулевых результатов !!! ТАК ВЫВОД ЕСТЬ: от второго результата первый результат должен уменьшиться !!!
вот я получил:
90-17 = 73 результат, которого я ожидал!
источник