Содержание

ab (Apache Bench) - утилита проверки производительности Apache, Nginx, LSWS

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.

Пример 1. Проверка максимального количества запросов

Утилита 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

Из этого отчета самыми важными данными будут:

Пример 2. Тестирование нагрузки на веб-сервер

Примеры использование Apache Bench для тестирования нагрузки на веб-сервер.

Где

Пример 3. Проверить что сайт выдерживает 5000 посетителей в сутки

Чтобы проверить, выдерживает ли ваш сайт 5000 посетителей в сутки с помощью утилиты Apache Bench (ab), вам нужно запустить

ab -n 5000 -c 100 -k URL_вашего_сайта

После завершения теста вы получите результаты, включая скорость запросов, количество успешных и неуспешных запросов, среднее время ответа и т.д. Если результаты соответствуют вашим ожиданиям и сайт успешно обрабатывает 5000 запросов в сутки, то ваш сайт прошел проверку.

Обратите внимание, что результаты тестирования могут быть влиянии как настройками вашего сервера, так и сетевыми условиями, поэтому рекомендуется провести несколько тестов в разное время суток для получения более надежных результатов.

Опции запуска Apache Bench (ab)

Ниже представлен список поддерживаемых опций 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)

FAQ 1. Как при помощи ab benchmarking тестировать нескольких URL

Предположим, вы хотите одновременно протестировать несколько 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 &

FAQ 2. Протестировать работу вашего кода PHP под нагрузкой

Если вы хотите просто протестировать работу вашего PHP, достаточно создать файл с содержанием и запустить на него тест. Если при наращивании конкурентных запросов вы получаете ошибку

socket: Too many open files

настройте переменную ядра Руководство по использованию команды ulimit в Linux: Настройка ограничений системных ресурсов, например так

ulimit -n 10240