Тестирование и оптимизация 1С-Битрикс (Александр...

47
Нагрузочное тестирование и оптимизация конфигурации «1С-Битрикс: Управление сайтом» Александр Демидов «1С-Битрикс» Олег Бунин «Онтико» HighLoad++ 2010 Конференция разработчиков высоконагруженных систем

description

 

Transcript of Тестирование и оптимизация 1С-Битрикс (Александр...

Page 1: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Нагрузочное тестирование и оптимизация конфигурации

«1С-Битрикс: Управление сайтом»

Александр Демидов«1С-Битрикс»

Олег Бунин«Онтико»

HighLoad++ 2010Конференция разработчиков высоконагруженных систем

Page 2: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Популярность платформы

Можно загипнотизировать 100-200 клиентов…

На «1С-Битрикс: Управление сайтом» 50 000 проектов. 5 000 партнеров.

Page 3: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Производительность проекта

Производительность проекта зависит от трех составляющих:

• Конфигурация сервера или настройки хостинга и его общая производительность

• Настройки платформы, которые влияют на производительность (автокеширование, html-кеш, параметры поиска)

• Качество разработки, интеграции с платформой, которая выполняется веб-разработчиком

Page 4: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Конфигурация сервера

Ошибки конфигурирования по-прежнему являются основным препятствием для достижения максимальной производительности.

Типовые ошибки при самостоятельном конфигурировании:

•Не установлен прекомпилятор PHP

•Недостаточно памяти прекомпилятору

•Медленная файловая система (в том числе и на Unix)

•Отсутствует FrontEnd (nginx)

•ngnix есть, но всю статику запрашивает у Apache

•Не отрегулировано значение MaxClients в Apache (нестабильная конфигурация)

Единичны случаи правильных самостоятельных конфигураций

Page 5: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

1С-Битрикс: Веб-окружение Linux• Минимальные расходы на развертывание

оптимальной конфигурации

• Наилучшая производительность

• Сбалансированность под большие нагрузки

• Автоматическое конфигурирование под ресурсы сервера

• Проверено нагрузочными тестами

• Проверено отделом безопасности

• Оптимизировано для работы корпоративного портала

Бесплатно! Экономит 200-300 часов администрирования.

Page 6: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Поставляется как RPM пакет. Включает: •mysql-server •httpd-server (Apache 2.*) •zend-server-ce-php-5.2 •mod-php-5.2-apache2-zend-server •php-5.2-loader-zend-server •nginx •memcached •stunnel •catdoc •php-модуль geoip

Поддерживаются ОС: •Fedora 8-13 32-bit•CentOS 5 32-bit (64-bit – реализована пробная поддержка)•Ubuntu

Готовый комплект для развертывания.

1С-Битрикс: Веб-окружение Linux

Cкачать: http://www.1c-bitrix.ru/

Page 7: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

1С-Битрикс: Виртуальная машина

«1С-Битрикс: Виртуальная машина» – это «1С-Битрикс: Веб-окружение Linux» с использованием разных способов виртуализации.

Виртуальная машина эмулирует работу реального сервера и включает в себя: •сконфигурированную операционную систему,•веб-сервер, •базу данных, •firewall, •почтовый сервер, •а также большое число настроек, от которых зависит надежность, производительность и безопасность веб-проекта.

Page 8: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Технологии виртуальных машинVMware - наиболее развитая технология, поддержка любых ОС, отсутствуют специфические требования к аппаратному обеспечению

Virtuozzo Parallels - коммерческая технология виртуализации на уровне ядра Linux, поддерживается Linux, Windows, целенаправленно разработана для ISP

Hyper-V - технология Microsoftтесная интеграция с технологией виртуализации от Intel, предназначена для виртуализации Windows серверов и ограниченного перечня дистрибутивов Linux

Amazon Elastic Compute Cloud (Amazon EC2) - реализованная технология cloud computing, упор сделан на оплате использованных ресурсов: процессора, дисков, сети

Page 9: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Производительность платформы

Настройки платформы «1С-Битрикс», которые влияют на производительность:

• Автокеширование

• HTML-кеш

• Управляемое кеширование

Page 10: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Замеры на вашей конфигурацииЭталонные замеры производительности, которые используются «Монитором производительности», выполнены на виртуальной машине.

Page 11: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Замеры на вашей конфигурации

Page 12: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Замеры на вашей конфигурации

Page 13: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Время создания страницы

Page 14: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Анализ производительности системы

Выполненный указанный сценарий решает проблемы 97% сайтов!

И только для 2-3% требуется детальный анализ логики проекта, запросов, анализ сложной бизнес-логики.

Шаг 1: Анализ конфигурации

Шаг 2: Анализ конфигурации «1С-Битрикс»

Шаг 3: Предварительная оценка качества разработки

Шаг 4: Итоговый анализ показателей

Page 15: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Масштабирование

• Мы уже умеем масштабировать веб-приложение (несколько бэкендов, любой фронтенд, распределяющий нагрузку, хранение сессий в базе).

• В ближайших версиях – поддержка репликаций (а также поддержка разделения проекта по нескольким базам: «Проект», «Веб-аналитика», «Поиск» и т.д.).

• Пул соединений в dbconn.php – нет необходимости в модификации разработанных решений

Page 16: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Нагрузочное тестирование

Нагрузочное тестирование - обязательный этап настройки.

Нагрузочное тестирование является важнейшей процедурой подготовки крупного проекта к открытию.

Нагрузочное тестирование позволяет определить предел работоспособности созданного проекта именно на выбранном оборудовании.

Зачастую, простые корректировки конфигурации могут ускорить проект в 5-10 раз и сделать его устойчивым к стрессовым нагрузкам.

Page 17: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Цели нагрузочного тестирования

Проверка и оптимизация конфигурации (цель – получить идеальное веб-окружение; тесты проводились на «1С-Битрикс: Веб-окружение» версии 1.6, по результатам будет выпущена версия 2.0)

• оценка максимальной производительности, которую способны выдерживать типовые редакции на выделенном оборудовании, влияние опций и модулей продукта на производительность

• оценка стабильности при максимальных нагрузках при проведении 24-часовых тестов

• выявление ограничений конфигурации, определение методов дальнейшего масштабирования и оптимизации

Проверка продукта в различных сценариях

Page 18: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Используемое оборудованиеДля тестовых установок «1С-Битрикс: Управление сайтом» использовался выделенный сервер «EuroDedicated Универсальный», предоставленный компанией .masterhost:HP ProLiant DL120, 1×Intel Quad Core X3210, 1×1TB SATA, 8GB RAM

Обычный заурядный сервер, доступный каждому!

Аренда: 5 000 руб./мес.

Page 19: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Тестируемые продукты

• редакция «Старт», «Корпоративный сайт производственной компании», демо-версия, ограниченный набор модулей, отсутствие веб-аналитики, типичный сайт-визитка

• редакция «Бизнес», «Интернет-магазин», демо-данные, редакция с большим набором модулей, веб-аналитикой, проактивной защитой и антивирусом, готовое решение для быстрого старта бизнеса, динамический контент, авторизация пользователей

• система: CentOS 5.3 x86_64, bitrix-env.rpm – пакет для установки и настройки Linux окружения и продуктов «1С-Битрикс»

Page 20: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Тестирующее оборудование и ПО

• Рабочая станция для установки ПО тестирования – выделенный сервер, предоставленный компанией .masterhost - «EuroDedicated-Win Универсальный»: HP ProLiant DL120 / Dual Core Intel Pentium E2160, 1.80GHz / 2x500GB SATA / 4GB RAM

• Windows Server Web Edition 2003

• ПО для генерации нагрузки и анализа результатов - WAPT 7.0

• Сеть: 100 Мбит сетевые адаптеры на тестовом и тестирующем серверах

Page 21: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

WAPT 7.0

http://www.loadtestingtool.com/

• Гибкая регулировка нагрузки (количество одновременных подключений, скорость канала, задержка между хитами и т.п.)

• Обширные возможности логирования и мониторинга

• Большое количество отчетных данных

Page 22: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Профили пользователей

Старт Путь по сайту Всего стр. в сессии 50:главная страница / 11выпускаемая продукция /products/ 1категории товаров /products/X/ 13виды товаров /products/X/YY/ 10услуги /services/ 3виды услуг /services/YY/ 2контакты /contacts/ 1новости /news/ 2о компании /company/ 2о компании, страницы /company/ZZZ.php 5

Page 23: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Профили пользователей

Business Authorized users Путь по сайту Всего стр. в сессии 29:главная страница / 3вход в систему /login/ 2вид товара /catalog/furniture/XXX/YYY/ 8категории товаров /catalog/furniture/XXX/ 3сравнение товаров /catalog/furniture/compare/ 5просмотр/действия с корзиной /personal/cart/ 3оформление заказа /personal/order/make/ 1

/personal/order/ 1информационный раздел /about/delivery/ 1информация /about/ 1выход /about/?logout=yes 1

Page 24: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Профили пользователей

Business Non-Authorized users Путь по сайту Всего стр. в сессии 24:

главная страница / 7

каталог /catalog/ 1

вид товара /catalog/furniture/XXX/YYY/ 6

категории товаров /catalog/furniture/XXX/ 4

информация /about/ 1

информационный раздел /about/ZZZ/ 3

просмотр фото товаров /upload/iblock/EE/FFF.jpg 2

Page 25: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

На старт! Внимание! Марш!

• Файловая система ext3 с опцией noatime

• fs.file-max = 999999

• Отключены CustomLog (Apache) и access_log (nginx)

Page 26: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Монитор производительности

До начала тестов (в состоянии покоя) – 66 единиц

Page 27: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Эталонный тест

Авторизованные сессии

Неавторизованные сессии

По всем сессиям

Avg page exec time (PHP), sec     0,058Avg response time, sec 0,28 0,075 0,09(with page elements) 0,644 0,105 0,135Pages 616 149 8 198 999 8 815 149Pages per second 7,1 94,9 102,0Hits 2 054 456 40 655 930 42 710 386Hits per second 23,80 471,00 494,33Active users 40 260 300Sessions 20 515 341 429 361 944Sessions per second 0,24 3,95 4,19HTTP errors, %, не более     0,05

Редакция «Бизнес», все модули отключены

Page 28: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Выбор условий тестирования

Ограничение скорости соединения (до 256k) и увеличение времени между хитами практически не влияют на сравниваемые показатели производительности.

Page 29: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Тест 2: Zend Server CE vs. APC

Авторизованные сессии Неавторизованные сессии По всем сессиямAvg page exec time (PHP), sec     0,043Avg response time, sec 0,154 0,09 0,105Pages 5 641 66 482 72 123Pages per second 7,8 92,3 100,2

Авторизованные сессии Неавторизованные сессии По всем сессиямAvg page exec time (PHP), sec     0,082Avg response time, sec 0,54 0,41 0,42Pages 5 076 59 110 64 186Pages per second 7,05 82,1 89,15

Zend Server CE – 12-минутные тесты

APC apc.shm_size=256 (Мб)

Скорость генерации страниц сократилась на 11%

Page 30: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Тест 3: PHP 5.2.6 vs. PHP 5.3.3

Авторизованные сессии Неавторизованные сессии По всем сессиямAvg page exec time (PHP), sec     0,043Avg response time, sec 0,154 0,09 0,105Pages 5 641 66 482 72 123Pages per second 7,8 92,3 100,2

PHP 5.2 – 12-минутные тесты

PHP 5.3.3

Отличия в результатах – не более, чем на 1% в разные стороны

Авторизованные сессии Неавторизованные сессии По всем сессиямAvg page exec time (PHP), sec     0,042Avg response time, sec 0,15 0,09 0,09Pages 5 442 66 155 71 597Pages per second 7,56 91,9 99,44

Page 31: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Тест 4: продукт – хранение сессий в БД

Авторизованные сессии Неавторизованные сессии По всем сессиямAvg page exec time (PHP), sec     0,043Avg response time, sec 0,154 0,09 0,105Pages 5 641 66 482 72 123Pages per second 7,8 92,3 100,2

Эталон – 12-минутный тест

Сессии в БД

Скорость генерации страниц сократилась на 3%

Авторизованные сессии Неавторизованные сессии По всем сессиям

Avg page exec time (PHP), sec     0,053Avg response time, sec 0,19 0,14 0,15Pages 5 396 64 540 69 936Pages per second 7,49 89,6 97,13

Page 32: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Тест 5: продукт – хранение кэша в memcached

Авторизованные сессии Неавторизованные сессии По всем сессиямAvg page exec time (PHP), sec     0,043Avg response time, sec 0,154 0,09 0,105Pages 5 641 66 482 72 123Pages per second 7,8 92,3 100,2

Эталон – 12-минутный тест

Кэш в memcached

Скорость генерации страниц сократилась на 15%

Авторизованные сессии Неавторизованные сессии По всем сессиямAvg page exec time (PHP), sec     0,085Avg response time, sec 0,7 0,58 0,59Pages 4 958 55 995 60 953Pages per second 6,89 77,8 84,66

Page 33: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Тест 6: влияние модуля веб-аналитики

На 12-часовом тесте – значительно падение скорости генерации страниц:

•потребление mysqld до 120% ядра CPU

•load average – до 12-13

Почему?

Page 34: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Тест 6: диагностика

Общая оценка производительности упала примерно в 3 раза

Page 35: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Тест 6: диагностика

Закладка «Разработка» показывает страницы, создающие максимальную нагрузку

Page 36: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Тест 6: диагностика

Page 37: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Тест 6: диагностика… и «лечение» Максимальное время выполнения у запроса к B_STAT_SESSION, который

выполняется по индексу (IP_FIRST_NUMBER,DATE_STAT типа Date).

Генерация нагрузки – с одного IP адреса. Соответственно индекс обладал нулевой избирательностью.

Для исправления ситуации (приближения к реальной жизни), изменим случайным образом данные в таблице B_STAT_SESSION:

mysql > update b_stat_session set IP_FIRST_NUMBER = FLOOR(1520000000 + RAND() * (232669));

При повторном тестировании получаем скорость генерации - 85 стр./сек.  Таким образом, модуль веб-аналитики в наших тестовых условиях снижает

скорость генерации страниц на15%.

Page 38: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Тест 7: влияние модуля проактивной защиты

Авторизованные сессии Неавторизованные сессии По всем сессиямAvg page exec time (PHP), sec     0,043Avg response time, sec 0,154 0,09 0,105Pages 5 641 66 482 72 123Pages per second 7,8 92,3 100,2

Эталон – 12-минутный тест

Проактивная защита включена

Скорость генерации страниц сократилась на 3%

Авторизованные сессии Неавторизованные сессии По всем сессиямAvg page exec time (PHP), sec     0,056Avg response time, sec 0,23 0,15 0,16Pages 5 300 64 316 69 616Pages per second 7,36 89,3 96,66

Page 39: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Тест 8: влияние веб-антивируса

Авторизованные сессии Неавторизованные сессии По всем сессиямAvg page exec time (PHP), sec     0,043Avg response time, sec 0,154 0,09 0,105Pages 5 641 66 482 72 123Pages per second 7,8 92,3 100,2

Эталон – 12-минутный тест

Веб-антивирус включен

Скорость генерации страниц сократилась на 5%

Авторизованные сессии Неавторизованные сессии По всем сессиямAvg page exec time (PHP), sec     0,065Avg response time, sec 0,27 0,2 0,2Pages 5 274 62 981 68 255Pages per second 7,33 87,5 94,80

Page 40: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Тест 9: влияние прочих модулей

Авторизованные сессии Неавторизованные сессии По всем сессиямAvg page exec time (PHP), sec     0,043Avg response time, sec 0,154 0,09 0,105Pages 5 641 66 482 72 123Pages per second 7,8 92,3 100,2

Эталон – 12-минутный тест

Включены: блоги, веб-сервисы, формы, обучение и т.д.

Скорость генерации страниц сократилась на 3%

Авторизованные сессии Неавторизованные сессии По всем сессиямAvg page exec time (PHP), sec     0,053Avg response time, sec 0,22 0,14 0,15Pages 5 420 64 332 69 752Pages per second 7,53 89,3 96,88

Page 41: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Оценка производительности продукта

Сценарии «боевых» тестов:

Тест 10: оценка производительности интернет-магазина, созданного и работающего на программной платформе «1С-Битрикс: Управление сайтом» (редакция «Бизнес», опция «HTML кеширование» выключена, опция «Проактивный фильтр (Web Application Firewall)» включена).

Тест 11: оценка производительности программной платформы «1С-Битрикс: Управление сайтом» (редакция «Старт», опция «HTML кеширование» выключена).

Тест12: оценка производительности промо-сайта, созданного и работающего на программной платформе «1С-Битрикс: Управление сайтом» (редакция «Старт», опция «HTML кеширование» включена).

Page 42: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Тест 10: «Бизнес», «Интернет-магазин»

Авторизованные сессии Неавторизованные сессииПо всем сессиям

Avg page exec time (PHP), sec     0,065Avg response time, sec 0,26 0,17 0,18(with page elements) 0,29 0,22 0,23Pages 658 446 7 852 909 8 511 355Pages per second 7,62 90,9 98,51Hits 2 063 982 35 018 485 37 082 467Hits per second 23,9 405 429Active users 40 260 300Sessions 21 925 327 026 348 951Sessions per second 0,25 3,79 4,04HTTP errors, %, не более     0,05

8 511 355 страниц в сутки 21 925 авторизованных пользователей интернет-магазина 13 155 оформленных заказов в интернет магазине

Page 43: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Тест 11: «Старт»

12 420 746 страниц в сутки

Авторизованные сессии

Неавторизованные сессии По всем сессиям

Avg page exec time (PHP), sec     0,035Avg response time, sec   0,22 0,22(with page elements)   0,23 0,23Pages   12 420 746 12 420 746Pages per second   144 143,76Hits   40 964 238 40 964 238Hits per second   474 474Active users   2800 2800Sessions   242 113 242 113Sessions per second   2,8 2,80HTTP errors, %, не более     0,03

Page 44: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Тест 12: «Старт», «Промо-сайт»

Уже при скорости 300 стр./сек. ограничивающим фактором стал сетевой интерфейс (100 Мбит).

При отключенной статике стабильная работа системы продолжалась при скорости генерации страниц около 1000-1100 стр./сек.

Результат:85 103 456 хитов в сутки

Page 45: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Результат на стандартном оборудовании

Результаты нагрузочного тестирования подтверждают, что «1С-Битрикс: Управление сайтом» стабильно работает в условиях сверхбольших нагрузок.

Page 46: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Проекты с высокой нагрузкой

Page 47: Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)

Спасибо за внимание! Вопросы?