siege
sudo apt-get install siege
Для проверки сделаем первый тест. Будем симулировать 10 пользователей, которые безостановочно загружают главную страницу в течении 5 минут.
siege -c 10 -b -t 5m http://mysites.com/
Эмитация работы пользователя
Для того чтобы посмотреть на нагрузку создаваемою при открытии страниц сайта, мы воспользуемся логом сервера. И скопируем из него все url запросов.
cat access.log | grep -o -P '(GET|POST) .* HTTP'| awk '{print "http:// mysites.com "$2}'| sort -u | grep -v -P -i '(admin)' >> /tmp/urls.txt
Разберем его поподробнее:
**cat access.log** - выводит лог, где на месте access.log должен быть путь к логу доступа apache **grep -o -P '(GET|POST) .* HTTP'** - ищем с помощью регулярного выражения url **awk '{print "http://mysites.com "$2}'** - удаляем шум, добавляем имя хоста (**http://mysites.com замените на свое**) **sort -u** - сортируем, удаляем дубликаты **grep -v -P -i '(admin)'** - фильтруем url, по которым ходить не надо с помощью регулярных выражений Для фильтрации статики, можно применить: **grep -v -P -i '\.(css|js|jpg|png|gif|txt)$' ** **>> /tmp/urls.txt** - отправляем результат в файл
В результате получаем файл, содержащий множество реальных url. Приводим нашу команду к такому виду:
siege -c 10 -b -t 5m -f /tmp/urls.txt
Чтобы заставить утилиту брать URL из файла не последовательно, а случайно, добавьте опцию '-i':
При необходимости вы можете увеличить диапазон случайно временной задержки между отправкой запросов при помощи опции '-d'. Например, чтобы siege выдерживал случайную паузу между запросами в пределах между 0 и 5 секундами:
siege -c 10 -d 5 -b -t 5m -i -f /tmp/urls.txt
Некоторые опции: -b - не будет делать паузу между запросами -c - количество параллельных запросов, отправляемых за один раз -r - количество повторов запроса -v - показывает текущие запросы и ответы в консоли -t - время теста, можно использовать h,m,s -f - список URL-ов из файла -i - брать ULR-ы из файла рандомно