Различия

Показаны различия между двумя версиями страницы.


Предыдущая версия
ab [2025/07/06 12:38] (текущий) – внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== ab (Apache Bench) - утилита проверки производительности Apache, Nginx, LSWS ======
 +**ab (Apache Bench)** - утилита проверки производительности Веб серверов, например Apache, [[Nginx|Nginx]], [[LiteSpeed|LiteSpeed]] Web Server (LSWS). В последних версиях ab поддерживает https протокол. Документация [[https://httpd.apache.org/docs/current/programs/ab.html|ab - Apache HTTP server benchmarking tool]]. ab устанавливается вместе с сервером Apache, например, для Ubuntu вы можете установить его с помощью команды
 +<file bash>
 +apt install apache2-utils
 +</file>
  
 +
 +Apache Bench (ab) пригодится для быстрой и грубой оценки производительности веб-сервера, так что если нужно получить более приближенные к реальности данные, придется воспользоваться дополнительными утилитами [[instrumenty_dlja_provedenija_nagruzochnogo_testirovanija]].
 +
 +===== Пример 1. Проверка максимального количества запросов =====
 +
 +Утилита ab подходит как для простого, так и продвинутого тестирования. Проверка максимального количества запросов с [[TLS|TLS]]:
 +<file bash>
 +ab -c 50 -n 10000 -f TLS1.2 -H "Accept-Encoding: gzip,deflate" https://somesite.com/
 +</file>
 +
 +Команда выполнила 10 000 запросов в 50 потоков и показала скорость и обработанное количество запросов:
 +<file>
 +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
 +</file>
 +
 +Из этого отчета самыми важными данными будут:
 +
 +  * **Requests per second** — количество запросов в секунду. К примеру если страница состоит из 20 частей (CSS, картинки и HTML), то в нашем примере сервер способен обработать около 40 одновременных пользователей в секунду.
 +  * **Time per request (mean)** — среднее время на выполнение группы параллельных запросов (в нашем случае 50);
 +  * **Time per request (mean, across all concurrent requests)** — среднее время на выполнение одного запроса.
 +
 +===== Пример 2. Тестирование нагрузки на веб-сервер =====
 +Примеры использование Apache Bench для тестирования нагрузки на веб-сервер.
 +  * Пример 1: <file bash>
 +ab -c7 -n200 http://example.com/index.php
 +или со *
 +ab -n 100 -c 20 https://example.com/*
 +</file>
 +Где
 +  * -с7 - количество одновременных(конкурирующих) запросов к Веб серверу;
 +  * -n200 - общее количество запросов в тесте;
 +
 +  * **Пример использования:**<file>
 +ab -n 100 -c 10 -t 5 http://examle.com/
 +</file> При таком запуске apache bench, будут выполняться 100 запросов, параллельно будут работать 10 запросов. 5 секунд - ограничение по времени на все запросы, те из них которые не отработают в течении этого времени выполнены не будут.
 +
 +===== Пример 3. Проверить что сайт выдерживает 5000 посетителей в сутки =====
 +Чтобы проверить, выдерживает ли ваш сайт 5000 посетителей в сутки с помощью утилиты Apache Bench (ab), вам нужно запустить
 +<file bash>
 +ab -n 5000 -c 100 -k URL_вашего_сайта
 +</file>
 +
 +  * -n 5000 указывает Apache Bench на количество запросов, которые необходимо выполнить (в данном случае 5000).
 +  * -c 100  определяет количество одновременных соединений (посетителей), которые будут созданы одновременно..
 +  * -k это флаг KeepAlive, который позволяет использовать одно соединение для нескольких запросов, что может быть полезно в реальных сценариях использования.
 +
 +После завершения теста вы получите результаты, включая скорость запросов, количество успешных и неуспешных запросов, среднее время ответа и т.д. Если результаты соответствуют вашим ожиданиям и сайт успешно обрабатывает 5000 запросов в сутки, то ваш сайт прошел проверку.
 +
 +Обратите внимание, что результаты тестирования могут быть влиянии как настройками вашего сервера, так и сетевыми условиями, поэтому рекомендуется провести несколько тестов в разное время суток для получения более надежных результатов.
 +===== Опции запуска Apache Bench (ab) =====
 +Ниже представлен список поддерживаемых опций ab, изучите их
 +<file bash>
 +-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)
 +</file>
 +
 +
 +===== FAQ 1. Как при помощи ab benchmarking тестировать нескольких URL =====
 +Предположим, вы хотите одновременно протестировать несколько URL-адресов? Для этого создайте сценарий оболочки с несколькими вызовами ab. В конце каждой строки поместите &, это заставит команду работать в фоновом режиме и позволит начать выполнение следующей команды. Также давайте перенаправим вывод в файл для каждого URL-адреса, используя перенаправление. Например:
 +<file bash>
 +#!/bin/sh
 +
 +ab -n 100 -c 10 https://dieg.info/ > test1.txt &
 +ab -n 100 -c 10 https://wow2.top/ > test2.txt &
 +</file>
 +===== FAQ 2. Протестировать работу вашего кода PHP под нагрузкой =====
 +Если вы хотите просто протестировать работу вашего [[PHP|PHP]], достаточно создать файл с содержанием и запустить на него тест. Если при наращивании конкурентных запросов вы получаете ошибку <file bash>
 +socket: Too many open files
 +</file> настройте переменную ядра [[ulimit]], например так <file bash>
 +ulimit -n 10240
 +</file>

📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.

📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!