Создание тест-плана jmeter – от расчета цепочек до нагрузочного кластера на 5-10 млн. хитов Сербул Александр Руководитель направления контроля качества интеграции и внедрений 1С-Битрикс Учимся считать нагрузку Нужно проверить, что веб-проект выдержит нагрузку … в чем она, нагрузка, измеряется? Уникальные посетители в сутки? Хиты к динамике в сутки Хиты к статике в сутки Производительность API Экспорты/импорты данных Пик и общая посещаемость за сутки За сутки – 1,5 млн. хитов к динамике (по логам) Среднее в секунду: 1,5 млн./86400 = 17 Но на графике в пике видим – 34 запросов/сек Готовимся к пикам выше среднего – в 2-3 раза. Точнее – смотрим на графиках. Система работает в штатном режиме? Не перегружена ли текущая веб-система? Число ошибок и таймаутов в логах Перегруженная текущая веб-система может «отбрасывать» запросы Пользователи и хиты Нередко 1 пользователь ~ 10 хитов Смотрите данные модуля «Веб-аналитика» или данные внешних источников Можно «прикинуть» ожидаемое число сотрудников компании Хитов к статике – часто на порядок больше Цепочки Куда будут ходить пользователи/сотрудники? Берем из аналитики или предполагаем. 1.1 Главная 1.2 Список новостей 1.3 Детальная новости 1.4 Поиск по сайту 1.5 Форум 2.1 Детальная каталога 2.2 Авторизация 2.3 Корзина 2.4 Мастер заказа 2.5 Личный кабинет Цепочки - распределение Распределяем потоки виртуальных пользователей по цепочкам: 70% - Главная 20% - Каталог – Корзина – Мастер заказа 5% - Результаты поиска – Описание товара – Корзина 5% - Новости – Новость детально Цепочки – важные моменты Клиенты должны уметь авторизовываться. Логины, пароли, Идшники элементов, поисковые слова – лучше сделать разными (из файлов). Рандомные паузы между хитами. Загрузить тестовый контент – в каталог, форум и т.п.! Цепочки – расчет Сколько хитов в данной цепочке клиент сделает за сутки? 1.1 Главная Пауза ~ 30 сек 1.2 Список новостей Пауза ~ 30 сек 1.3 Детальная новости Пауза ~ 30 сек 1.4 Поиск по сайту Пауза ~ 30 сек -> в начало Примерно 86400/30 ~ 3к хитов Подбираем число нагрузочных потоков (вирт. пользователей) в каждой цепочке для получения, допустим, суммарно: 5 млн. хитов с сутки Настройка числа нагруз. потоков Структура запроса в цепочке Настройка рандомной паузы Рандомные страницы Очистка cookies в конце цепочки Временные данные – в CSV файлы Логины/пароли Поисковые фразы ИД элементов каталога Работа с переменными Работа с переменными Глобальные переменные Глобальные переменные Авторизация Распределенное тестирование Читаем мануал: http://jmeter.apache.org/usermanual/remote-test.html - Централизованное распределение тест-плана по кластеру Сбор информации с кластера в один лог Запускаем серверы: JMETER_HOME/bin/jmeter-server На клиенте “/bin/jmeter.properties”: remote_hosts=127.0.0.1:60001, 127.0.0.1:60002, 127.0.0.1:60003 Распределенное тестирование jmeter -n -t script.jmx -R server1,server2... Распределенное тестирование 1) Создаем нагрузочный кластер из нод JMeter 2) Управляем им централизованно из консоли или GUI 3) Собираем результаты теста в единый лог-файл для дальшейшего анализа Пропускная способность сети? Можно создать ОЧЕНЬ большую нагрузку в десятки миллионов хитов в сутки! Спасибо за внимание! Вопросы? Александр Сербул [email protected] AlexSerbul