Различия
Здесь показаны различия между двумя версиями данной страницы.
| Следующая версия | Предыдущая версия | ||
|
comet:load-testing [2017/06/11 17:14] levhav создано |
comet:load-testing [2019/12/18 01:58] (текущий) |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ====== Нагрузочное тестирование ====== | + | <rst>RU::003-Нагрузочное тестирование::001-Сценарий тестирования</rst> |
| + | <rst>Header: Сценарий тестирования</rst> | ||
| + | |||
| + | ====== Нагрузочное тестирование с tsung ====== | ||
| Для нагрузочного тестирования можно использовать программу tsung | Для нагрузочного тестирования можно использовать программу tsung | ||
| - | Установка tsung | + | ===== Установка tsung ===== |
| <code bash> | <code bash> | ||
| apt install tsung | apt install tsung | ||
| </code> | </code> | ||
| + | |||
| + | ===== Сценарий тестирования ===== | ||
| Программе tsung нужно передать файл с описанием сценария теста. Вот пример простого тестового сценария. | Программе tsung нужно передать файл с описанием сценария теста. Вот пример простого тестового сценария. | ||
| Строка 49: | Строка 54: | ||
| </tsung> | </tsung> | ||
| </file> | </file> | ||
| - | В нём указано что к localhost к порту 8087 надо подключатся по вебсокетам. И создавать по 2500 тысячи подключений каждую секунду до тех пор пока их в сумме не наберётся 64000. | + | В нём указано что к localhost к порту 8087 надо подключатся по вебсокетам. И создавать по 2500 тысячи подключений каждую секунду до тех пор, пока их в сумме не наберётся 64000. |
| - | То есть этот сценарий просто создаёт тестовую нагрузку в 64000 пользователей онлайн. Тест синтетический и реальные 64000 будут нагружать сервер несколько по другому а не просто висеть онлайн, но это уже от приложения и предполагаемого сценария использования комет сервера можно составить свой сценарий тестирования который бы отражал ваш тип нагрузки на комет сервер. | + | То есть этот сценарий просто создаёт тестовую нагрузку в 64000 пользователей онлайн. Тест синтетический и реальные 64000 будут нагружать сервер несколько по другому, а не просто висеть онлайн, но это уже от приложения и предполагаемого сценария использования комет сервера можно составить свой сценарий тестирования, который бы отражал ваш тип нагрузки на комет сервер. |
| + | |||
| + | ===== Нагрузка более чем 64000 онлайн ===== | ||
| + | |||
| + | Нагрузка в 64000 это максимум? который позволит создать операционная система. Если хотите больше, то надо тестировать один сервер с нескольких машин с tsung одновременно. TCP-соединение уникально определяется четверкой [source ip, source port, dest ip, dest port], таким образом с одной машины на 1 порт сервера можно создать не более 64 тыс одновременных соединений | ||
| ===== Запуск сервера ===== | ===== Запуск сервера ===== | ||
| Строка 71: | Строка 80: | ||
| backlog = 10000 | backlog = 10000 | ||
| epoll_size = 100000 | epoll_size = 100000 | ||
| - | thread_num = 12 ; количество потоков, делайте больше чем ядер на сервере так как сервер не lock-free | + | thread_num = 12 ; количество потоков, делайте больше, чем ядер на сервере так как сервер не lock-free |
| benchmark = 1 ; Интервал между замерами нагрузки (0 = не замерять) | benchmark = 1 ; Интервал между замерами нагрузки (0 = не замерять) | ||
| port = 8087 | port = 8087 | ||
| uptimeTestInterval = 600 ; Интервал для проверок uptime у соединений (так же за одно выправляет значение счётчика пользователей онлайн) | uptimeTestInterval = 600 ; Интервал для проверок uptime у соединений (так же за одно выправляет значение счётчика пользователей онлайн) | ||
| - | maxUptime = 0 ; Максимально значение uptime после которого коннект отключается. | + | maxUptime = 0 ; Максимально значение uptime, после которого коннект отключается. |
| </code> | </code> | ||
| - | А потом запустить сервер в консольном режиме чтоб видеть вывод статистики | + | А потом запустить сервер в консольном режиме, чтобы видеть вывод статистики |
| <code bash> | <code bash> | ||
| ./cpp_comet | ./cpp_comet | ||
| </code> | </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> | ||