Как провести нагрузочное тестирование веб-сервера с помощью ApacheBench (ab)

Нагрузочное тестирование веб-сервера очень важно для оценки того, как он ведет себя под определенной нагрузкой, особенно перед развертыванием в реальной среде. ApacheBench, широко известный как ab, - это широко используемый инструмент для нагрузочного тестирования HTTP-серверов. Он обеспечивает простой способ создания большого количества запросов и вычисления количества запросов, обслуживаемых в секунду, задержки и других соответствующих показателей.

ApacheBench предустановлен на многих системах на базе UNIX и является частью пакета HTTP-сервера Apache. Он легкий, простой в использовании и настраивается в соответствии с требованиями теста. Он помогает выявить потенциальные узкие места, гарантируя, что ваш веб-сервер сможет выдержать ожидаемое количество одновременных соединений.

Независимо от того, используете ли вы Apache, Nginx или любой другой HTTP-сервер, ApacheBench можно использовать для проведения тщательного тестирования. Вы можете итеративно запускать тесты и, соответственно, настраивать конфигурацию вашего веб-сервера.

Шаги по нагрузочному тестированию веб-сервера с помощью ab

Убедитесь, что ApacheBench установлен в вашей системе.

ApacheBench версияУстановите apache2-utils, если ab не установлен.

Получите URL-адрес веб-страницы, на которой нужно провести нагрузочный тест.

Запустите ab на выбранной веб-странице.

Формат запроса: ab -n <число_запросов> -c <количество потоков>.

Это базовый пример выполнения теста производительности, который в данном случае заключается в отправке 1000 запросов на веб-сервер с 10 запросами, отправляемыми одновременно.

Обязательно добавьте (прямой) слеш (/) в конце URL-адреса, иначе он не будет распознан командой

Проанализируйте полученные результаты, чтобы понять показатели производительности.

нагрузочное тестирование веб-сервера с помощью ab

Основные показатели, на которые следует обратить внимание, - это количество запросов в секунду (Requests per second), время выполнения запроса (Time per request) и количество неудачных запросов (Failed requests).

Тестирование с включением режима KeepAlive снижает накладные расходы сети за счет совместного использования одной HTTP-сессии для всех запросов.

Используйте различные уровни параллелизма, количество запросов или дополнительные опции, такие как тестирование POST-данных или пользовательских HTTP-заголовков, чтобы имитировать различные сценарии.

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

Опции ApacheBench (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 - Заголовок типа содержимого, используемый для данных POST/PUT, например 'application/x-www-form-urlencoded'. По умолчанию - 'text/plain'
  • -v verbosity - Сколько информации об устранении неполадок выводить.
  • -w - Выводить результаты в HTML-таблицах
  • -i - Использовать HEAD вместо GET
  • -x атрибуты - Строка для вставки в качестве атрибутов таблицы
  • -y атрибуты - Строка для вставки в качестве атрибутов tr
  • -z атрибуты - Строка для вставки в качестве атрибутов td или th
  • -C атрибут - Добавить cookie, например, 'Apache=1234'. (повторяется)
  • -H атрибут - Добавляет произвольную строку заголовка, например 'Accept-Encoding: gzip'. Вставляется после всех обычных строк заголовков. (повторяется)
  • -A атрибут - Добавить базовую WWW-аутентификацию, атрибуты это имя пользователя и пароль, разделенные двоеточием.
  • -P атрибут - Добавить базовую аутентификацию прокси-сервера, атрибуты: имя пользователя и пароль, разделенные двоеточием.
  • -X proxy:port - Прокси-сервер и номер порта для использования
  • -V - Вывести номер версии и выйти
  • -k - Использовать функцию HTTP KeepAlive
  • -d - Не показывать перцентили, обслуживаемые таблицей.
  • -S - Не показывать доверительные оценки и предупреждения.
  • -q - Не показывать прогресс при выполнении более 150 запросов
  • -l - Принимать переменную длину документа (используйте это для динамических страниц)
  • -g имя_файла- Вывод собранных данных в файл формата gnuplot.
  • -e имя_файла - Вывод CSV-файла с процентными показателями
  • -r - Не завершать работу при ошибках получения сокета.
  • -m метод - Имя метода
  • -h - Вывести информацию об использовании (это сообщение)
  • -I - Отключить расширение TLS Server Name Indication (SNI)
  • -Z набор шифров - Укажите набор шифров SSL/TLS (см. openssl ciphers)
  • -f протокол - Укажите протокол SSL/TLS (SSL2, TLS1, TLS1.1, TLS1.2 или ALL)
  • -E файл_сертифката - Укажите дополнительную цепочку сертификатов клиента и закрытый ключ

Советы по нагрузочному тестированию веб-сервера с помощью ab

  • Это ни в коем случае не имитирует реальное использование. Для этого могут больше подойти другие инструменты, такие как Apache's JMeter.
  • ab не следует запускать на той же машине, что и веб-сервер. ab требователен к ресурсам, поэтому его использование негативно скажется на производительности веб-сервера и исказит результаты тестирования.
  • Различные факторы могут улучшить производительность сервера. Лучше всего провести несколько тестов и усреднить результат.
Понравилась статья? Поделиться с друзьями:
Добавить комментарий