Stress-Tester
Программа для нагрузочного тестирования web-ресурсов
Содержание
- Технологии
- Начало работы
- Пример конфигурации
- Разработка
- Требования
- Установка зависимостей
- Создание билда
Технологии
Использование
Программа принимает три параметра:
- -config YAML-файл
- -server
- -port НОМЕР
Обязателен, как минимум, один из параметров.
-config YAML-файл - указание файла конфигурации для тестирования
-server - программа запускается в режиме сервера для тестирования запросов с разных машин. После запуска выводит номер порта, который он слушает. при распределении процесса на несколько серверов, значение settings.rps тоже будет распределено
-port НОМЕР - применяется для серверного режима. позволяет указать номер порта, который нужно слушать. если порт занят, то работа программы прерывается. если не указывать порт, то будет выбран случайный свободный порт в диапазоне от 10000 до 65535
Usage of stress-tester:
-config string
конфигурационный файл для тестов
-port uint
порт для сервера (по умолчанию: случайное значение из диапазона [10000;65535])
-server
запуск в режиме сервера (по умолчанию: false)
Пример конфигурации
version: 3
settings:
rps: 500 # запросов в секунду
duration: 10 # продолжительность теста в секундах
shuffle: true # перемешивать список URL
follow_redirects: false # возвращать код редиректа или делать редирект(ы) и возвращать код ответа
timeout: 0 # ограничение времени ожидания ответа (работает только, если follow_redirects = false)
resources:
host: https://domain.tld # хост для запроса
urls: # список URL относительно вышеуказанного хоста
- path1
- path2?query=value
remote_hosts: # IP адрес и порт, который слушает приложение, запущенное в режиме сервера
- 127.0.0.1:12345
links_masks: # список регулярных выражений для URL, который нужно вызывать из ответа
- https://domain.tld/[A-Z]+
- https://domain.tld/[0-9]+###50 # можно добавить вероятность вызова ссылки после разделителя "###"
# если указать 0, то ссылка вызываться не будет
# все значения не из диапазона [0;100] будут игнорироваться
# при отсутствия значения, будет использоваться вероятность 100
Разработка
Требования
Для установки и запуска проекта, необходим Go v1.23.0+.
Установка зависимостей
Для установки зависимостей, выполните команду:
$ go mod tidy
Создание билда
Чтобы выполнить production сборку, выполните команду:
$ make build