Siege — простая, но функциональная утилита для проведения нагрузочного тестирования сайта, умеющая выполнять POST запросы, работать как по http, так и по https, и выполнять авторизацию на сайтах.
В CentOS устанавливаем siege из EPEL репозитория:
# yum install epel-release # yum install siege
Простой тест запускается командой:
# siege https://sysadmin.pm/
В рамках теста, генерируются подключения от 25 пользователей, по мере выполнения\остановки теста, можно получить отчёт о работе вида:
Конфигурация.
По умолчанию, максимальное количество подключений ограничено 255 пользователями, однако в конфиге можно увеличить это ограничение параметром limit. Также, в конфигурационном файле можно выполнить дополнительную настройку утилиты:
- Указать, по каким ссылкам на сайте переходить не нужно;
- Настроить работу с кешированным содержимым;
- Задать альтернативный useragent;
- Выбрать конкретную версию HTTP протокола;
- Включить рандомизацию посещения URL адресов при работе с их списком;
- Определить параметры для авторизации;
- Подключить proxy при необходимости.
В CentOS, конфиг siege доступен в /root/.siege/siege.conf
Пишем файл для теста.
Администратор может создать файл для проведения теста, в котором опишет, какие конкретно адреса посещать, в каких скриптах выполнять авторизацию и т. п. Пример такого конфига:
# Формат адресов для siege: # -- # https://sysadmin.pm/ # https://sysadmin.pm/index.php # http://www/index.html # www/index.html # https://sysadmin.pm/hidepid/ # # Можно сделать так же и POST запрос напрямую: # -- # https://sysadmin.pm/post.php POST req=1&cat=2 # # Либо POST запрос из файла: # https://sysadmin.pm/post.php POST < /var/sysadmin/post # ------------------------------------------------------- https://sysadmin.pm/ https://sysadmin.pm/ https://sysadmin.pm/category/budni/ https://sysadmin.pm/page/11/
Далее, остаётся просто запустить тест:
# siege -f sysadmin.pm.txt
Для того, что бы указать количество клиентов при подключении во время тестирования, можно использовать опцию -c:
# siege -c 300 -f sysadmin.pm.txt # siege -c 100 https://sysadmin.pm
К сожалению, мир так устроен, что обязательно находятся ребята, которые полезный инструмент начинают применять не совсем по назначению. В этом случае, администратору сервера, на сайт которого прилетело большое количество запросов «нагрузочного тестирования» от доброжелателя, стоит как минимум заглянуть в логи, и заблокировать проблемный IP (а возможно и юзерагент). Либо и вовсе настроить ограничение на количество подключений в определённый промежуток времени. Об этом поговорим отдельно.