Нагрузочное тестирование NSUts
Задача
Исследуемая нагрузка: тренировка – 50, интернет тур олимпиады – 5
00–1000 человек
Интересные сценарии: 1. Регистрация пользователей 2. Посылка решений 3. Перетестирование, просмотр очереди, рейтинга
Описание нагрузочных тестов системы NSUts
Тесты jmeter в svn-репозитории: svn+ssh://parallels.nsu.ru/home2/svn/olympic/trunk/tests/jmeter
Имеются следующие тесты:
- nsuts_registration – одновременная регистрация нескольких пользователей и вход в систему тестирования
- nsuts_submit – вход нескольких пользователей в систему, выполнение отправки решений, просмотр рейтинга
- nsuts_rejudge – вход администратора в систему во время проведения тура, выполнение перетестирования решений, просмотр очереди и рейтинга
Результаты
Исходные условия тестов: нагрузочное тестирование производилось как на одной, так и на нескольких машинах. Для тестирования использовалась система nsuts-1.2.7 на сервере olympic.nsu.ru с тестовой базой данных.
- Тест «Регистрация новых пользователей»:
- Условия теста: вход на страницу регистрации, заполнение и отправка введенных данных, вход в систему.
- Количесво пользователей: 1000
- Задержка между итерациями: 1000ms
- Результаты: ошибок сервера не обнаружено, скорость высокая;
- Плохие показатели: отсутсвуют.
- Тест «Навигация пользователей по системе»:
- Условия теста: последовательная авторизация пользователей, каждый из которых непрерывно открывает доступные вкладки.
- Количесво пользователей: 1000
- Задержка между итерациями: 2000ms
- Показания: выделено памяти ~6000M; Average при max-нагрузке ~2500ms;
- Плохие показатели: низкая скорость веб-интерфейса (!), страница «Участники».
- Тест «Отправка решений и просмотр рейтинга»:
- Условия теста: условия теста 2 + отправка решений.
- Количесво пользователей: 500
- Задержка между итерациями: 3000ms
- Результаты: ошибок сервера не обнаружено, скорость средняя;
- Плохие показатели: страница «Участники».
- Тест «Навигация администратора по системе, перетестирование»:
- Условия теста: условия теста 2 и 3 + вход администратора в систему, выполнение перетестирования решений, просмотр очереди и рейтинга.
- Количесво пользователей: 500
- Задержка между итерациями: 3000ms
- Результаты: см. тест 3;
- Плохие показатели: страница «Участники».
-
Внесенные изменения после исследований
Apache
- Mode: worker
- Max Clients? = 500
- Min Spare Threads? = 25
- Max Spare Threads? = 150
- Threads Per Child? = 50
Mysql
- max_connections = 800 (default = 151)
- thread_cache_size = 8
- table_cache = 256
- innodb_buffer_pool_size = 256M
- join_buffer_size = 16777216 (16M)
- wait_timeout = 20000s
- interactive_timeout = 20000
Параметры контейнера
- Num Other Sock? =360:360
- Priv Vm Pages?=1048576:20480000
2048576:40480000
Работа с JMeter
Установка JMeter
- Скачиваем архив с официального сайта: http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi
- Извлекаем архив, запускаем файл bin/jmeter.bat
Запуск тестов JMeter
- Настраиваем базовые параметры теста (Thread Group):
- Number of Threads (users) – количество виртуальных пользователей (потоков)
- Ramp-Up Period (in seconds) – общее время равномерного распределения старта потоков
- Добавляем HTTP Cookie Manager – работа с сессиями через cookie
- Создаем сценарий теста при помощи элемента HTTP Proxy Server:
- добавляем элемент HTTP Proxy Server в Work Bench (Work Bench -> Add -> Non-Test Elements -> HTTP Proxy Server)
- добавляем элемент Recording Controller для записи последовательности действий теста (Thread Group -> Add -> Logic Controller -> Recording Controller)
- запускаем прокси сервер на свободном порту (по умолчанию 8080)
- запускаем браузер с нужным прокси (по умолчанию: localhost, port 8080) и ходим по сайту
- Добавляем элементы мониторинга (Thread Group->Add->Listener):
- View Results in Table
- Graph Results
- Aggregate Report
- Summary Report
- Запуск теста: Run->Clear All && Run->Start.
Интересующие параметры
- Samples – замеры
- Average – среднее время отклика замеров
- Throughput – интенсивность потока: Throughput = (number of requests) / (total time)
- Deviation – стандартное отклонение
Полезные ссылки
http://ru.wikipedia.org/wiki/Нагрузочное_тестирование
мануал
Статьи на хабре:
Простой нагрузочный тест с Apache JMeter
Рецепт нагрузочного тестирования на JMeter
Быстрое создание нагрузочных тестов на JMeter для web-сайтов
Отладка тест-плана JMeter