Попробую привести очень краткую инструкцию по использованию инструмента tsung для тестирования
Ос клиенткой стороны, на которой запускаются тесты - Ubuntu 12.04. Сервер - неважно какой, лиш бы на нем был запущен и настроен MnongooseIM и к нему был правильно настроенный доступ.
Порядок действий:
Скачать дистрибутив tsung-1.5.0.tar.gz (последняя на данный момент версия) с сайта производителя: http://tsung.erlang-projects.org/dist/
Распаковать.
cd в папку с распакованным tsung
./configure
скорее всего будет ошибка о том, что не установлен erlang:
configure: error: test Erlang program execution failed
sudo apt-get install erlang
вводим пароль суперпользователя.
соглашаемся на установку, нажав Y и ввод.
ждем.
./configure
теперь должно пройти без ошибок
make
ждем пока все скомпилируется
sudo make install
без sudo будет ошибка
после установки набираем в консоли tsung и видим, что приложение установлено:
По умолчанию путь к конфигурационному файлу и папка для логов: ~/.tsung/
Можем использовать его или задать пути через параметры -f и -l (см скриншот)
Если используем путь по умолчанию, то эту самую папку .tsung нужно создать.
Для запуска тестов все готово. Осталось только создать сценарий. Имя по умолчанию - tsung.xml
Сразу нужно сказать, что для графического представления результатов тестирования нужно установить дополнительные шаблоны perl:
sudo apt-get install gnuplot-nox libtemplate-perl libhtml-template-perl libhtml-template-expr-perl
Рассмотрим такой пример (это слегка отредактированный пример jabber.xml, который идет вместе с tsung в папке examples):
здесь:
строка 5 - клиент, с которого производятся запросы
строка 8 - сервер, на котором установлен MongooseIM, тип подключения - websocket. (На некоторых машинах tsung ругается и я ставил тип tcp - все работает так же ...)
и клиентов и серверов может быть несколько. В данном случае по одному. ip адрес для имени сервера должен быть прописан в /etc/hosts.
строка 11 - адрес того же сервера для мониторинга его нагрузки (память, нагрузка на CPU) и тип монитора. В данном случае это Erlang. Это значит, что на сервере должен быть установлен Erlang (и к серверу должен быть обеспечен доступ по ssh без паролей).
строка 15 - настройки "заселения" пользователей на сервер. Фаз заселения может быть несколько и они могут иметь разные скорость\поведение. В данном случае это значит, что в течении 20 секунд каждую секунду будет подключаться 1 пользователь.
строка 19 - число, которое будет подставляться в конец значений логина и пароля из строк 21 и 22. Имея такую комбинацию из строк 19, 21 и 22 мы получим 20 пользователей с логином от user001 до user0020 и соответствующими паролями. (Такие пользователи должны быть зарегистрированы на сервере. Можно руками через Spark, а можно попросить того, кто умеет делать это с помощью Erlang :))
строка 20 - адрес jabber сервера.
строка 23 - путь к вебсокету (относительно сервера). Часто путь к нему - это "/chat"
строка 26 - сессия. Probability - это вероятность или "вес" сессии. В данном случае сессия одна и это значение равно 100. Когда сессий несколько, то сумма их весов должна быть равна 100.
в строке 27 происходит подключение
строка 28 и все остальные thinktime - это время паузы (простоя) в секундах. Паузы иногда нужны, чтобы дать серверу время обработать запрос а иногда просто, чтобы подключенные пользователи "покурили". (поправьте меня кто-то. если я не прав ...)
строки 30 - 33 авторизация. (По умолчанию в примере указан метод авторизации plain и я долго не мог подключиться, пока не поменял тип на sasl plain, за что отдельное спасибо товарищу Piotr Nosek, который ответил на мой вопрос в stackoverflow)
строка 36 - запрос списка контактов
строка 40 - переход в состояние online (до этого пользователь в состоянии connected)
строка 45 - отправка сообщения случайному пользователю, который выбирается из списка тезх, чье состояние "online". Данное событие зациклено и повторяется 10 раз (строка 43). Длинна сообщения - 56 символов.
строка 50 - отправка сообщения, но уже случайному пользователю, который в состоянии offline.
строка 55 - отправка приглашения "в друзья" случайному online пользователю. В строке 58 происходит отправка сообщения presence:subscribe, на которое приглашаемый должен ответить presence:subscribed
строка 62 - отключение от сервера.
Таким образом, каждую секунду к серверу подключается 1 пользователь, авторизируется, запрашивает список контактов, переходит в статус "online", 10 раз посылает случайному online пользователю сообщение из случайных 56 символов, 1 раз посылает случайному offline пользователю сообщение длинной 16 символов, приглашает случайного пользователя в друзья и отключается. Между всеми этими действиями пользователь "ждет" по паре секунд.
У всех запросов есть параметр - ack. Что это такое и как работает - отлично описано здесь. И вообще, документация в целом написана хорошо, но бывают частные случаи, в которых сложно разобраться, имея только документацию.
Итак, сценарий готов. Запускаем тест командой tsung start и ... и никакого чуда. В консоли просто появилось сообщение о пути в папке с логами.
Следить за процессом можно запустив в отдельном терминале команду
watch -n1 tsung status
По завершению теста увидим тут строку Tsung is not started.
Теперь можно посмотреть на результаты. Вот тут нам и пригодятся установленные ранее шаблоны. Переходим в папку с полученными логами:
cd /home/имя_пользователя/.tsung/log/папка_с_логами
и запускаем perl скрипт для генерации html отчета:
perl /usr/lib/tsung/bin/tsung_stats.pl
В результате в папке с логами появится файл и другие связанные с его существованием файлы. Открыв файл в браузере увидим несколько таблиц и графиков с результатами тестирования:
Для проведения простых тестов этого достаточно. Для разных вариантов сценариев, нагрузки и мониторинга нужно читать документацию.
Ос клиенткой стороны, на которой запускаются тесты - Ubuntu 12.04. Сервер - неважно какой, лиш бы на нем был запущен и настроен MnongooseIM и к нему был правильно настроенный доступ.
Порядок действий:
Скачать дистрибутив tsung-1.5.0.tar.gz (последняя на данный момент версия) с сайта производителя: http://tsung.erlang-projects.org/dist/
Распаковать.
cd в папку с распакованным tsung
./configure
скорее всего будет ошибка о том, что не установлен erlang:
configure: error: test Erlang program execution failed
sudo apt-get install erlang
вводим пароль суперпользователя.
соглашаемся на установку, нажав Y и ввод.
ждем.
./configure
теперь должно пройти без ошибок
make
ждем пока все скомпилируется
sudo make install
без sudo будет ошибка
после установки набираем в консоли tsung и видим, что приложение установлено:
По умолчанию путь к конфигурационному файлу и папка для логов: ~/.tsung/
Можем использовать его или задать пути через параметры -f и -l (см скриншот)
Если используем путь по умолчанию, то эту самую папку .tsung нужно создать.
Для запуска тестов все готово. Осталось только создать сценарий. Имя по умолчанию - tsung.xml
Сразу нужно сказать, что для графического представления результатов тестирования нужно установить дополнительные шаблоны perl:
sudo apt-get install gnuplot-nox libtemplate-perl libhtml-template-perl libhtml-template-expr-perl
Рассмотрим такой пример (это слегка отредактированный пример jabber.xml, который идет вместе с tsung в папке examples):
здесь:
строка 5 - клиент, с которого производятся запросы
строка 8 - сервер, на котором установлен MongooseIM, тип подключения - websocket. (На некоторых машинах tsung ругается и я ставил тип tcp - все работает так же ...)
и клиентов и серверов может быть несколько. В данном случае по одному. ip адрес для имени сервера должен быть прописан в /etc/hosts.
строка 11 - адрес того же сервера для мониторинга его нагрузки (память, нагрузка на CPU) и тип монитора. В данном случае это Erlang. Это значит, что на сервере должен быть установлен Erlang (и к серверу должен быть обеспечен доступ по ssh без паролей).
строка 15 - настройки "заселения" пользователей на сервер. Фаз заселения может быть несколько и они могут иметь разные скорость\поведение. В данном случае это значит, что в течении 20 секунд каждую секунду будет подключаться 1 пользователь.
строка 19 - число, которое будет подставляться в конец значений логина и пароля из строк 21 и 22. Имея такую комбинацию из строк 19, 21 и 22 мы получим 20 пользователей с логином от user001 до user0020 и соответствующими паролями. (Такие пользователи должны быть зарегистрированы на сервере. Можно руками через Spark, а можно попросить того, кто умеет делать это с помощью Erlang :))
строка 20 - адрес jabber сервера.
строка 23 - путь к вебсокету (относительно сервера). Часто путь к нему - это "/chat"
строка 26 - сессия. Probability - это вероятность или "вес" сессии. В данном случае сессия одна и это значение равно 100. Когда сессий несколько, то сумма их весов должна быть равна 100.
в строке 27 происходит подключение
строка 28 и все остальные thinktime - это время паузы (простоя) в секундах. Паузы иногда нужны, чтобы дать серверу время обработать запрос а иногда просто, чтобы подключенные пользователи "покурили". (поправьте меня кто-то. если я не прав ...)
строки 30 - 33 авторизация. (По умолчанию в примере указан метод авторизации plain и я долго не мог подключиться, пока не поменял тип на sasl plain, за что отдельное спасибо товарищу Piotr Nosek, который ответил на мой вопрос в stackoverflow)
строка 36 - запрос списка контактов
строка 40 - переход в состояние online (до этого пользователь в состоянии connected)
строка 45 - отправка сообщения случайному пользователю, который выбирается из списка тезх, чье состояние "online". Данное событие зациклено и повторяется 10 раз (строка 43). Длинна сообщения - 56 символов.
строка 50 - отправка сообщения, но уже случайному пользователю, который в состоянии offline.
строка 55 - отправка приглашения "в друзья" случайному online пользователю. В строке 58 происходит отправка сообщения presence:subscribe, на которое приглашаемый должен ответить presence:subscribed
строка 62 - отключение от сервера.
Таким образом, каждую секунду к серверу подключается 1 пользователь, авторизируется, запрашивает список контактов, переходит в статус "online", 10 раз посылает случайному online пользователю сообщение из случайных 56 символов, 1 раз посылает случайному offline пользователю сообщение длинной 16 символов, приглашает случайного пользователя в друзья и отключается. Между всеми этими действиями пользователь "ждет" по паре секунд.
У всех запросов есть параметр - ack. Что это такое и как работает - отлично описано здесь. И вообще, документация в целом написана хорошо, но бывают частные случаи, в которых сложно разобраться, имея только документацию.
Итак, сценарий готов. Запускаем тест командой tsung start и ... и никакого чуда. В консоли просто появилось сообщение о пути в папке с логами.
Следить за процессом можно запустив в отдельном терминале команду
watch -n1 tsung status
По завершению теста увидим тут строку Tsung is not started.
Теперь можно посмотреть на результаты. Вот тут нам и пригодятся установленные ранее шаблоны. Переходим в папку с полученными логами:
cd /home/имя_пользователя/.tsung/log/папка_с_логами
и запускаем perl скрипт для генерации html отчета:
perl /usr/lib/tsung/bin/tsung_stats.pl
В результате в папке с логами появится файл и другие связанные с его существованием файлы. Открыв файл в браузере увидим несколько таблиц и графиков с результатами тестирования:
Для проведения простых тестов этого достаточно. Для разных вариантов сценариев, нагрузки и мониторинга нужно читать документацию.
Комментариев нет:
Отправить комментарий