RU::003-Нагрузочное тестирование::001-Сценарий тестированияHeader: Сценарий тестирования
====== Нагрузочное тестирование с tsung ======
Для нагрузочного тестирования можно использовать программу tsung
===== Установка tsung =====
apt install tsung
===== Сценарий тестирования =====
Программе tsung нужно передать файл с описанием сценария теста. Вот пример простого тестового сценария.
В нём указано что к localhost к порту 8087 надо подключатся по вебсокетам. И создавать по 2500 тысячи подключений каждую секунду до тех пор, пока их в сумме не наберётся 64000.
То есть этот сценарий просто создаёт тестовую нагрузку в 64000 пользователей онлайн. Тест синтетический и реальные 64000 будут нагружать сервер несколько по другому, а не просто висеть онлайн, но это уже от приложения и предполагаемого сценария использования комет сервера можно составить свой сценарий тестирования, который бы отражал ваш тип нагрузки на комет сервер.
===== Нагрузка более чем 64000 онлайн =====
Нагрузка в 64000 это максимум? который позволит создать операционная система. Если хотите больше, то надо тестировать один сервер с нескольких машин с tsung одновременно. TCP-соединение уникально определяется четверкой [source ip, source port, dest ip, dest port], таким образом с одной машины на 1 порт сервера можно создать не более 64 тыс одновременных соединений
===== Запуск сервера =====
Для того чтобы ОС позволила открыть столько соединений надо увеличить ограничения на количество файловых дескрипторов командой
ulimit -m 64000
В файле comet.ini надо в секции benchmark задать настройки секций benchmark и ws
[benchmark]
to_log = true ; Вывод замеров о нагрузке в лог
[ws]
ip = 0.0.0.0
backlog = 10000
epoll_size = 100000
thread_num = 12 ; количество потоков, делайте больше, чем ядер на сервере так как сервер не lock-free
benchmark = 1 ; Интервал между замерами нагрузки (0 = не замерять)
port = 8087
uptimeTestInterval = 600 ; Интервал для проверок uptime у соединений (так же за одно выправляет значение счётчика пользователей онлайн)
maxUptime = 0 ; Максимально значение uptime, после которого коннект отключается.
А потом запустить сервер в консольном режиме, чтобы видеть вывод статистики
./cpp_comet
===== Запуск теста =====
Нагрузочный тест запускаем так:
ulimit -m 64000
tsung -f ~/tsung.xml start
В tsung аргументом if передаём файл сценария для тестирования.
===== Анализ результатов =====
В процессе тестирования вы можете наблюдать за загрузкой ОС на пример через программы htop или iotop
Проверить то, что встроенный в комет сервер счётчик общего количества соединений онлайн показывает цифры близкие к правде можно командой:
ss -p | grep "cpp_comet" | wc -l
Она подсчитает количество входящих соединений средствами операционной системы.
По окончании тестирования tsung в папку складывает отчёт о тестировании. Но, чтобы его было можно посмотреть надо его обработать скриптом, который идёт вместе с самим tsung. Скрипт лежит в папке /usr/lib/tsung/bin/tsung_stats.pl
cd /home/victor/.tsung/log/20170524-1159
/usr/lib/tsung/bin/tsung_stats.pl
После чего скрипт с генерирует уже человеко читаемый отчёт о тестировании.
Следует учитывать то, что в данном сценарии и тест и сервер на одной машине, так что грузить они её будут совместно. Для чистоты эксперимента рекомендуется сервер запускать на одной машине, а tsung на другой машине.