Введение
Apache Bench — это инструмент, используемый для измерения производительности веб-сервера.Несмотря на то, что в его названии есть слово «Apache», его можно использовать для тестирования любого типа веб-сервера. В этом руководстве мы будем следовать инструкциям по использованию Apache Bench и тому, как интерпретировать его отчет о производительности веб-сервера. Apache Bench работает, отправляя различное количество HTTP-запросов на веб-сервер и регистрируя время ответа. Он может сказать вам, с какой перегрузкой сервер может справиться, прежде чем он будет перегружен и производительность упадет.
Используйте учетную запись root или пользователя с привилегиями sudo.
Если вы намерены протестировать сервер удаленно, читайте дальше, в противном случае пропустите первый абзац «Подключение к серверу» и прочитайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:
ssh root@IP_DEL_SERVER
Далее вам нужно будет ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:
ssh nome_utente@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Как установить Apache Bench
Apache Bench является частью пакета apache2-utils
, который можно установить с помощью системного менеджера пакетов. Запустите эти команды.
Если Apache еще не установлен в вашей системе, установите его с помощью следующей команды:
sudo dnf install httpd
Установите пакет, необходимый для использования Apache Bench:
sudo dnf install httpd-tools
Как использовать Apache Bench
Чтобы использовать Apache Bench, вам нужно знать свое имя хоста.
Чтобы просмотреть имя хоста, введите следующую команду:
hostname
Вы должны увидеть выходное сообщение с вашим именем хоста, например:
TEST-SERVER-1
Самый простой синтаксис для использования Apache Bench выглядит следующим образом:
ab TEST-SERVER-1/
Вы должны увидеть выходное сообщение, подобное следующему:
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking TEST-SERVER-1 (be patient).....done
Server Software: Apache/2.4.37
Server Hostname: TEST-SERVER-1
Server Port: 80
Document Path: /Document Length: 328 bytes
Concurrency Level: 1
Time taken for tests: 0.003 seconds
Complete requests: 1
Failed requests: 0
Non-2xx responses: 1
Total transferred: 508 bytes
HTML transferred: 328 bytes
Requests per second: 314.17 [#/sec] (mean)
Time per request: 3.183 [ms] (mean)
Time per request: 3.183 [ms] (mean, across all concurrent requests)
Transfer rate: 155.86 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 2 2 0.0 2 2
Waiting: 2 2 0.0 2 2
Total: 2 2 0.0 2 2
ab
требует завершающей косой черты после имени хоста имя hostname/
. Эта базовая команда бесполезна без дополнительных опций, поэтому давайте добавим некоторые параметры.
Apache Bench имеет множество доступных опций, но некоторые из наиболее полезных:
-n
(число): используется для указания количества запросов, которые ab должен отправить apache.-t
(время ожидания): используется для указания (в секундах), как долго ab должен продолжать отправлять запросы-c
(concurrent): используется для указания количества одновременных запросов, которые должен сделать ab
Вы можете попробовать эти варианты, чтобы смоделировать более реалистичный трафик для вашего веб-сервера и посмотреть, как он ведет себя при различных нагрузках, например:
ab -t 10 -n 10000 -c 100 TEST-SERVER-1/
Эта команда будет тестировать наш веб-сервер в течение 10 секунд, отправив максимум 10 000 запросов и одновременно отправив 100 из этих запросов.
Соображения
Есть несколько вещей, которые следует учитывать при использовании Apache Bench. Когда сервер получает тысячи HTTP-запросов из одного источника за считанные секунды, многие брандмауэры интерпретируют это как отказ в обслуживании и пытаются блокировать повторные подключения на некоторое время. Мы рекомендуем использовать Apache Bench только в локальной сети и тестировать на хосте, которым вы управляете. Однако это не идеальная имитация реального трафика. При подключении к веб-серверу где-то в мире пользователи будут иметь различные уровни задержки и hops
(путь, который проходит их соединение с веб-сервером), которые играют важную роль в воспринимаемой скорости вашего веб-сайта. вы запускаете команду ab) может быть узким местом. Если вы подозреваете, что в вашей системе нет необходимых ресурсов для инициирования такого большого количества подключений, вы можете проверить это с помощью команды top
для мониторинга использования ЦП и памяти во время выполнения теста ab. Если вы получаете Connection timed out
об ошибке «Превышено время ожидания соединения», возможно, ваши соединения были заблокированы брандмауэром или сервер Apache был перегружен и не смог обрабатывать дальнейшие запросы.
Интерпретация результатов Apache Bench
Первые несколько строк предоставляют только общую информацию о веб-сервере. Полезная информация начинается со строки Time taken for tests
. Time taken for tests
, указывает, сколько времени потребовалось команде ab для завершения теста. Если мы не указали тайм-аут, в этой строке будет указано, сколько времени потребовалось для завершения отправки указанного количества запросов. После применения оптимизаций к вашему веб-серверу вы должны увидеть сокращение времени, необходимого для завершения тестов (если вы не укажете тайм-аут). Complete requests
показывают, сколько запросов было отправлено и возвращено успешно. Failed requests
указывают количество неудачных запросов. Очевидно, вы захотите увидеть очень маленькое число, в идеале нулевое. Если эта строка сообщает о некоторых неудачных запросах, это может означать, что веб-сервер перегружен и не может вовремя ответить на все запросы.
Total transferred
и передано в HTML transferred
— отчет о том, сколько данных в байтах было отправлено на веб-сервер. Requests per second
— это среднее количество запросов, которые веб-сервер смог обработать за одну секунду. Это полезно для определения производительности вашего веб-сервера, когда к нему одновременно обращаются многие пользователи. Time per request
— это среднее время, необходимое для обработки запроса. Значения выражаются в миллисекундах. Второй time per request
просто умножается на значение параллелизма. Transfer rate
— это скорость, с которой он мог передавать данные, что не должно приводить к каким-либо узким местам в локальной сети. Если вы тестируете в Интернете, ограничения маршрутизации и пропускной способности могут повлиять на это гораздо раньше, чем сам Apache. В разделе «Время Connection Times (ms)
» указано время ответа для различных этапов HTTP-запросов.
Connect
указывает время, необходимое ab для установления соединения с веб-сервером. Processing
— это количество времени, которое требуется Apache для обработки запросов. Поскольку ab на самом деле не может его измерить, он просто записывает, как долго соединение открыто после его запуска. Waiting
— это время, которое ab должен ждать между отправкой запроса и получением ответа от веб-сервера. Total
указывает общее время, прошедшее с момента установления соединения с сервером, получения ответа и окончательного закрытия соединения. Последняя метрика Apache Bench Percentage
предлагает более точный взгляд на среднее время отклика веб-сервера путем сортировки времени подключения в процентах.
Вывод
В этой статье мы увидели, как установить Apache Bench на CentOS 8 и использовать его для тестирования производительности веб-сервера. Мы также узнали, как интерпретировать вывод Apache Bench. После дальнейшей оптимизации веб-сервера снова запустите Apache Bench и ожидайте повышения производительности, если были внесены улучшения.