Партнерская конференция «1С-Битрикс» Нагрузочное тестирование «1С-Битрикс»: методика проведения, специфика, как провести самим? Евгений Потапов ITSumma | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ О себе Евгений Потапов генеральный директор компании ITSumma Круглоcуточное удаленное администрирование серверов и техническая поддержка сайтов 100 миллионов уникальных посетителей в сутки Штат – 50 человек | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ О нас На поддержке: | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Содержание • Цели и задачи тестирования • Виды нагрузочных тестирований • Чем тестировать - инструментарий • Проведение теста «коробки» - архитектура, сценарии, проблемы • Результаты тестирования • Куда стремиться дальше? | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Цели и задачи тестирования 1. Проверить максимальную производительность магазина со 100 000 SKU на стандартном оборудовании Типичные вопросы в разработке и эксплуатации: • «Сколько посетителей может выдержать мой сервер? Я могу купить больше рекламы»? • «Мы сейчас выдерживаем 100 запросов в секунду – это много или мало»? • «Мне наш сисадмин говорит что можно выдерживать 500 одновременных соединений на нашем сервере» | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Цели и задачи тестирования 2. Проверить масштабируемость от 1 до 4 серверов • «Если мы возьмем второй сервер - мы сможем выдерживать нагрузку в два раза больше»? • «Мы можем добавлять новые серверы до бесконечности»? • «Вообще – кластер это эффективно?» | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Цели и задачи тестирования 3. Получить 3 результата нагрузочного тестирования – для 1, 2 и 4-х серверной конфигурации • Максимальное среднее число запросов в секунду в течение 24 часов • Максимальное число просмотров страниц в течение 24 часов • Максимальное число совершенных заказов в течение 24 часов | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Цели и задачи тестирования 4. Подбор оптимальной конфигурации ПО и рекомендации по эксплуатации высоконагруженных проектов • Оптимальная конфигурация серверного ПО • Тестирование эффективности и оптимизация схемы БД • Предложения для оптимизации 1С-Битрикс: Виртуальная машина и 1С-Битрикс: Веб-окружение | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Как тестировать? Виды нагрузочного тестирования Закрытая и открытая модель нагрузочного тестирования • Закрытая модель – постоянная искусственная статическая нагрузка – «пользователи» идут равномерно, нагрузка со временем не меняется. Цель – понять максимальную производительность. • Открытая модель – «пользователи» приходят волнами, иногда – с нагрузкой выше чем может справиться сервер. Цель – понять поведение в критических ситуациях в реальном мире. | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Виды нагрузочного тестирования Параметры тестирования • Закрытая модель (нужна максимальная эталонная производительность) • Тестирование длиной 24 часа • 100 000 SKU • Конфигурация: 1С-Битрикс: Управление сайтом – 1 сервер, 1СБитрикс: Enterprise – 2 сервера, 1С-Битрикс: Enterprise – 4 сервера • Выполнение SLA | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Виды нагрузочного тестирования Параметры тестирования - SLA • 99% динамических запросов должны быть выполнены быстрее 1000мс • Число ответов не-HTTP-200 должно быть не более 0.5% | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Инструментарий • Яндекс.Танк (https://tech.yandex.ru/tank/ ) • JMeter (http://jmeter.apache.org/ ) • Серверы в Selectel - Intel Xeon E3-1270v3 3.5 ГГц, 32 ГБ, 2 × 240 ГБ SSD - 8800 р. (отдельный сервер под танк) | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Сценарии тестирования • 60% - просмотр каталога • 37% - умный фильтр, выбор товара • 3% - добавление товара в корзину и оформление заказа | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Аппаратное обеспечение и конфигурация • Intel Xeon E3-1270v3 3.5 ГГц, 32 ГБ оперативной памяти, 2 × 240 ГБ SSD диски в software RAID 1 • 1 сервер – «источник атаки» с Яндекс.Танком • Серверы с 1С-Битрикс: 1С-Битрикс: Веб-окружение + PHP 5.6 | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Аппаратное обеспечение и конфигурация Конфигурация из 1 сервера | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Аппаратное обеспечение и конфигурация Конфигурация из 2 и 4 серверов | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Тестирование — этапы • Первый этап – «примерочная стрельба» • Второй этап – первые запуски полноценных тестов, тюнинг, грабли • Третий этап – стабильные тесты, фиксация результатов | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Тестирование – «примерочная стрельба» • Проверка конфигурации системы тестирования • Исправление ошибок конфигурации, сценариев • Подбор параметров для максимальной нагрузки при заданном SLA • Первый тюнинг системы • Фиксация параметров при заданном SLA | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Тестирование – «примерочная стрельба» • Односерверная конфигурация: 34 потока • Конфигурация из двух серверов: 74 потока • Конфигурация из четырех серверов: 136 потоков | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Тестирование – первые полноценные запуски - грабли Первый большой «прогон» - обязательно будут не очень хорошие результаты • Проблемы с конфигурацией сервера • Проблемы с конфигурацией сайта • Неоптимальные решения в конфигурации сайта • Проблемы с системой тестирования Первые запуски – инструкция к оптимизации | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Тестирование – первые полноценные запуски - грабли Все изменения конфигурации и оптимизации должны фиксироваться • Изменения в конфигурационных файлах • Изменения в настройках системы/сайта • Одно изменение за раз | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Тестирование – первые полноценные запуски - грабли Тестирование длиной в 24 часа – постоянный контроль • Мониторинг серверов под нагрузкой (хватает места, отвечает сайт) • Мониторинг сервера с системой тестирования • “Ручной контроль” • Слишком хорошие результаты – чаще всего – что-то не работает | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Тестирование – первые полноценные запуски - грабли Бюрократия • Сохранение конфигураций тестирования • Сохранение «сырых» результатов тестирования • Сохранение всех конфигураций, БД и кода | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Тестирование – результаты Результаты тестирования – 1 сервер (1С-Битрикс: Управление Сайтом, редакция Бизнес) • Время выполнения теста: 86892 секунд • Число PHP запросов в секунду: 167, при 34 одновременных потоках • 99-процентиль: 0,366мс. • Число просмотренных страниц: 14 421 563 • Процент невыполненных запросов: 0.31% | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Тестирование – результаты Результаты тестирования – 1 сервер 99-процентиль | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Тестирование – результаты Результаты тестирования – 1 сервер | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Тестирование – результаты Результаты тестирования – 2 сервера (1С-Битрикс: Enterprise). • Время выполнения теста: 86850 секунд • Число PHP запросов в секунду: 265, при 74 одновременных потоках • 99-процентиль: 0,950мс • Число просмотренных страниц 23 082 301 • Процент невыполненных запросов: 0.47% • Коэффициент масштабирования по сравнению с конфигурацией 1: 1.60 | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Тестирование – результаты Результаты тестирования – 2 сервера 99-процентиль | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Тестирование – результаты Результаты тестирования – 2 сервера | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Тестирование – результаты Результаты тестирования – 4 сервера (1С-Битрикс: Enterprise). • Время выполнения теста: 86402 секунд • Число PHP запросов в секунду: 535, при 136 одновременных потоках • 99-процентиль: 0,900мс • Число просмотренных страниц: 46 256 141 • Процент невыполненных запросов: 0.47% • Коэффициент масштабирования по сравнению с конфигурацией 2 2.00 | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Тестирование – результаты Результаты тестирования – 4 сервера 99-процентиль | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Тестирование – результаты Результаты тестирования – 4 сервера | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Тестирование – итоги и планы • Есть «эталон» и метрики • Есть понимание перспектив масштабирования • Хочется: тест в открытой модели – понять поведение системы в критических условиях, восстановление после сверхвысокой нагрузки | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Информация о тестировании • Тестирование проводилось в мае 2015 г. • Информация о результатах теста: http://www.1cbitrix.ru/products/cms/performance/#tab-test-link • Подробный отчет - http://www.1c- bitrix.ru/download/manuals/ru/1cbitrix_tests_2015.pdf | ПАРТНЕРСКАЯ КОНФЕРЕНЦИЯ Контакты Евгений Потапов http://itsumma.ru eapotapov@itsumma.ru http://facebook.com/eapotapov