ab (Apache Bench) - утилита проверки производительности Веб серверов, например Apache, Nginx, LiteSpeed Web Server (LSWS). В последних версиях ab поддерживает https протокол. Документация ab - Apache HTTP server benchmarking tool. ab устанавливается вместе с сервером Apache, например, для Ubuntu вы можете установить его с помощью команды
apt install apache2-utils
Apache Bench (ab) пригодится для быстрой и грубой оценки производительности веб-сервера, так что если нужно получить более приближенные к реальности данные, придется воспользоваться дополнительными утилитами Оптимизация Веб-Сайта нагрузочное тестирование при помощи httpstat, ab, Httperf, Tsung.
Утилита ab подходит как для простого, так и продвинутого тестирования. Проверка максимального количества запросов с TLS:
ab -c 50 -n 10000 -f TLS1.2 -H "Accept-Encoding: gzip,deflate" https://somesite.com/
Команда выполнила 10 000 запросов в 50 потоков и показала скорость и обработанное количество запросов:
Total transferred: 59560000 bytes HTML transferred: 52160000 bytes Requests per second: 816.77 [#/sec] (mean) Time per request: 122.434 [ms] (mean) Time per request: 2.449 [ms] (mean, across all concurrent requests) Transfer rate: 2375.33 [Kbytes/sec] received
Из этого отчета самыми важными данными будут:
Примеры использование Apache Bench для тестирования нагрузки на веб-сервер.
ab -c7 -n200 http://example.com/index.php или со * ab -n 100 -c 20 https://example.com/*
Где
ab -n 100 -c 10 -t 5 http://examle.com/
При таком запуске apache bench, будут выполняться 100 запросов, параллельно будут работать 10 запросов. 5 секунд - ограничение по времени на все запросы, те из них которые не отработают в течении этого времени выполнены не будут.
Чтобы проверить, выдерживает ли ваш сайт 5000 посетителей в сутки с помощью утилиты Apache Bench (ab), вам нужно запустить
ab -n 5000 -c 100 -k URL_вашего_сайта
После завершения теста вы получите результаты, включая скорость запросов, количество успешных и неуспешных запросов, среднее время ответа и т.д. Если результаты соответствуют вашим ожиданиям и сайт успешно обрабатывает 5000 запросов в сутки, то ваш сайт прошел проверку.
Обратите внимание, что результаты тестирования могут быть влиянии как настройками вашего сервера, так и сетевыми условиями, поэтому рекомендуется провести несколько тестов в разное время суток для получения более надежных результатов.
Ниже представлен список поддерживаемых опций ab, изучите их
-n requests количество запросов страницы. -c concurrency количество конкурентных запросов. -t timelimit максимальное время теста -s timeout максимальное время на один запрос. По умолчанию 30 секунд. -b windowsize размер TCP буфера в байтах -B address адрес для исходящих подключений -p postfile Файл, содержащий данные для POST. Не забудьте также установить -T -u putfile Файл, содержащий данные для PUT. Не забудьте также установить -T -T content-type HTTP заголовок для методов POST/PUT. По умолчанию text/plain -w Вывести результат в виде HTML. -C attribute Добавить cookie, например 'Apache=1234' -H attribute добавить произвольную строку заголовка, например 'Accept-Encoding: gzip' -A attribute Использовать Basic WWW Authentication, например -A user pass -P attribute Использовать аутентификацию на Proxy, например -P proxyuser proxypass -X proxy:port Указать Proxy сервер -V Отобразить версию ab -k Использовать KeepAlive -l Разрешить изменяемую длину документа. Используйте для динамических страниц. -g filename Сохранить результат в формате gnuplot. -e filename Сохранить результат в CSV. -r Не прекращать тест при ошибках передачи. -h Отобразить справку -f protocol Указать протокол. (SSL3, TLS1, TLS1.1, TLS1.2 или ALL)
Предположим, вы хотите одновременно протестировать несколько URL-адресов? Для этого создайте сценарий оболочки с несколькими вызовами ab. В конце каждой строки поместите &, это заставит команду работать в фоновом режиме и позволит начать выполнение следующей команды. Также давайте перенаправим вывод в файл для каждого URL-адреса, используя перенаправление. Например:
#!/bin/sh ab -n 100 -c 10 https://dieg.info/ > test1.txt & ab -n 100 -c 10 https://wow2.top/ > test2.txt &
Если вы хотите просто протестировать работу вашего PHP, достаточно создать файл с содержанием и запустить на него тест. Если при наращивании конкурентных запросов вы получаете ошибку
socket: Too many open files
настройте переменную ядра Руководство по использованию команды ulimit в Linux: Настройка ограничений системных ресурсов, например так
ulimit -n 10240