Это старая версия документа.


A PCRE internal error occured. This might be caused by a faulty plugin

<rst>RU::003-Нагрузочное тестирование::001-Сценарий тестирования</rst> <rst>Header: Сценарий тестирования</rst> ====== Нагрузочное тестирование с tsung ====== Для нагрузочного тестирования можно использовать программу tsung ===== Установка tsung ===== <code bash> apt install tsung </code> ===== Сценарий тестирования ===== Программе tsung нужно передать файл с описанием сценария теста. Вот пример простого тестового сценария. <file XML tsung.xml> <?xml version="1.0"?> <!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd"> <tsung loglevel="debug" version="1.0"> <clients> <client host="localhost" use_controller_vm="true" maxusers="64000" /> </clients> <servers> <server host="localhost" port="8087" type="tcp" /> </servers> <load> <arrivalphase phase="1" duration="60" unit="second"> <users maxnumber="64000" arrivalrate="2500" unit="second" /> </arrivalphase> </load> <options> <option name="ports_range" min="1025" max="65535"/> </options> <sessions> <session name="websocket" probability="100" type="ts_websocket"> <request> <websocket type="connect" path="/comet-server/ws/sesion=&amp;myid=&amp;devid=0&amp;v=3.24&amp;uuid=48wTOvoa-uEtC0thHzBkIKir14sXgkOy&amp;api=js"></websocket> </request> <for var="i" from="1" to="20000" incr="1"> <thinktime value="150"/> </for> <request> <websocket type="close"></websocket> </request> </session> </sessions> </tsung> </file> В нём указано что к localhost к порту 8087 надо подключатся по вебсокетам. И создавать по 2500 тысячи подключений каждую секунду до тех пор, пока их в сумме не наберётся 64000. То есть этот сценарий просто создаёт тестовую нагрузку в 64000 пользователей онлайн. Тест синтетический и реальные 64000 будут нагружать сервер несколько по другому, а не просто висеть онлайн, но это уже от приложения и предполагаемого сценария использования комет сервера можно составить свой сценарий тестирования, который бы отражал ваш тип нагрузки на комет сервер. ===== Нагрузка более чем 64000 онлайн ===== Нагрузка в 64000 это максимум? который позволит создать операционная система. Если хотите больше, то надо тестировать один сервер с нескольких машин с tsung одновременно. TCP-соединение уникально определяется четверкой [source ip, source port, dest ip, dest port], таким образом с одной машины на 1 порт сервера можно создать не более 64 тыс одновременных соединений ===== Запуск сервера ===== Для того чтобы ОС позволила открыть столько соединений надо увеличить ограничения на количество файловых дескрипторов командой <code bash> ulimit -m 64000 </code> В файле comet.ini надо в секции benchmark задать настройки секций benchmark и ws <code ini> [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, после которого коннект отключается. </code> А потом запустить сервер в консольном режиме, чтобы видеть вывод статистики <code bash> ./cpp_comet </code> ===== Запуск теста ===== Нагрузочный тест запускаем так: <code bash> ulimit -m 64000 tsung -f ~/tsung.xml start </code> В tsung аргументом if передаём файл сценария для тестирования. ===== Анализ результатов ===== В процессе тестирования вы можете наблюдать за загрузкой ОС на пример через программы htop или iotop Проверить то что встроенный в комет сервер счётчик общего количества соединений онлайн показывает цифры близкие к правде можно командой: <code bash> ss -p | grep "cpp_comet" | wc -l </code> Она подсчитает количество входящих соединений средствами операционной системы. По окончании тестирования tsung в папку складывает отчёт о тестировании. Но чтобы его было можно посмотреть надо его обработать скриптом который идёт вместе с самим tsung. Скрипт лежит в папке /usr/lib/tsung/bin/tsung_stats.pl <code bash> cd /home/victor/.tsung/log/20170524-1159 /usr/lib/tsung/bin/tsung_stats.pl </code> После чего скрипт с генерирует уже человеко читаемый отчёт о тестировании. <note tip>Следует учитывать то что в данном сценарии и тест и сервер на одной машине так что грузить они её будут совместно. Для чистоты эксперимента рекомендуется сервер запускать на одной машине, а tsung на другой машине.</note>

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
E E Q Q P