Проверка нагрузки на web-сервер с ab для Linux и Unix
Хочу рассказать в теме «Проверка нагрузки на web-сервер с ab для Linux и Unix» как можно протестировать нагрузку на сервер. Сделать можно это с утилитой Apache benchmark – это одна из самых простых утилит для тестирования нагрузки на сайты. Поставляется она вместе с веб сервером apache и не нуждается в настройке. Основной задачей apache benchmark (ab)– это показать каким количеством запросов можно «положить» веб-сервер и как быстро они выполняются.
Для того чтобы воспользоваться утилитой ab, нужно выполнить следующее:
# ab -c 10 -n 100 http://linux-notes.org/
Сейчас я поясню где и что, параметр «-с 10» – задает количество параллельных запросов, «-n 100» — это параметр который задает общее число запросов, а http://linux-notes.org/ – это мой сайт для тестирования.
Сайт для тестирования должен быть вводится в формате :
ab [options] [http[s]://]hostname[:port]/path
Все что выдаст можно увидеть у меня на рисунке ниже — это отчёт по нагрузке тестирующего сайта с помощью утилиты Apache benchmark:
Как видно с рисунка, я использую макбук и тестирую свой сайт. УБЕДИТЕЛЬНАЯ ПРОСЬБА, НЕ ТЕСТИРУЙТЕ ПОЖАЛУЙСТА ДАННЫЙ САЙТ и не выводите его из работы.
Сейчас поговорим о параметрах которые особо важны:
- Concurrency Level (количество одновременно-отправляемых запросов) — у меня их 10;
- Time taken for tests (тысяча запросов к серверу ) заняла 103 секунды (полное время на тестирование);
- Complete requests: успешно получены ответы (100) на всю тысячу запросов;
- Failed requests (не выполненные запросы) — у меня их 0;
- Write errors (ошибки записи) — у меня их 0;
- Total transferred (суммарный объем переданных данных) 8856700 байт;
- HTML transferred (из них «нужного» HTML) — 8800300 байт;
- Requests per second [#/sec] (mean)- это среднее количество запросов в секунду и заняло у меня 0.91 сек
- Time per request: 602.307 [ms] (mean) – втечении этого времени выполнились 10 параллельных запросов
- Time per request: 60.231 [ms] (mean, across all concurrent requests) – среднее время выполнения одного запроса
- Transfer rate: это скорость обмена данными с сервером и составила 79.2 кБ за секунду.
- Percentage of the requests served within a certain time (ms) – доля запросов на единицу времени. Тут видно, что 50% запросов выполнились менеее чем за пол секунды, а самый долгий запрос выполнялся 2 секунды(100% 2044 ms).
Изменяя параметры -n и -c можно отслеживать поведение сервера под нагрузкой.
Параметры ab
- -c — С данной опцией можно определить количество параллельных запросов.
- -n —С данной опцией можно определять количество отправляемых запросов на сайт.
- -t —С данной опцией можно задавать максимальное количество секунд.
- -C cookie-name=value —С данной опцией можно добавлять cookie в каждый запросу.
- -H — С данной опцией можно задававть заголовок для запроса.
- -T —С данной опцией можно задать Content-type.
- -p —С данной опцией можно задавать файл содержащий тело POST запроса.
Вот и все, моя статья «Проверка нагрузки на web-сервер с ab для Linux и Unix» подошла к завершению.
Apache Bench, Httperf и Tsung отлично подходят для тестирования нагрузки на большие и маленькие сайты. Но только tsung сможет выжать все соки из веб-сервера и показать на что он способен в условиях, приближенных к реальности. Не забывайте, что сначала все тесты нужно провести для одного пользователя, чтобы проследить зависимость и иметь точку отсчета.