'

Оптимизация

Понравилась презентация – покажи это...





Слайд 0

Оптимизация Битрикс: Управление сайтом Максим Смирнов ведущий разработчик компании «Битрикс»


Слайд 1

Проблематика Виртуальный хостинг Высокая конкуренция за кеш БД вынесена на отдельный сервер Выделенный сервер Высокая конкуренция блокировок в БД


Слайд 2

Цель Увеличение производительности “Битрикс: Управление сайтом”: уменьшение количества запросов ядра продукта оптимизация php кода ядра уменьшение количества запросов в модулях оптимизация компонент


Слайд 3

Инструменты xdebug отладчик, представляющий собой расширение php. Kcachegrind инструмент, визуально представляющий информацию, собранную отладчиком $DBDebugToFile переменная, определяемая в файле dbconn.php show_page_exec_time=Y&show_include_exec_time=Y show_sql_stat=Y встроенный в продукт инструментарий для профилирования и отладки запросов к БД ab утилита, входящая в состав популярного веб сервера Apache.


Слайд 4

Интерактивный отладчик show_page_exec_time=Y show_include_exec_time=Y show_sql_stat=Y


Слайд 5

Платформа Intel Celeron 2.5GHz / 512Mb RAM ОС: Debian sid 2.6.18 БД: Mysql 5.0.24 (стандартная сборка/пакет deb из репозитария) Веб сервер: Apache 1.3.34 (стандартная сборка/пакет deb из репозитария) PHP4/PHP5 APC: 3.0.10 (сборка из pecl со всеми опциями по умолчанию) Битрикс: Управление сайтом демоверсия в исходных кодах 5.0.9


Слайд 6

Процесс оптимизации Создание нагрузки Анализ выполнения Внесение изменений Повторное создание нагрузки Сравнение результатов Принятие решения о внесении изменений


Слайд 7

Создание нагрузки: ab ab -n 100 -c 5 http://192.168.0.43:4004/about/index.php This is ApacheBench, Version 2.0.41-dev <$Revision: 1.141 $> apache-2.0 Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.0.43 (be patient).....done Server Software: Apache/1.3.34 Server Hostname: 192.168.0.43 Server Port: 4004 Document Path: /about/index.php Document Length: 30308 bytes Concurrency Level: 5 Time taken for tests: 7.639576 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 3107100 bytes HTML transferred: 3030800 bytes Requests per second: 13.09 [#/sec] (mean) Time per request: 381.979 [ms] (mean) Time per request: 76.396 [ms] (mean, across all concurrent requests) Transfer rate: 397.14 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 1.6 0 10 Processing: 268 374 116.2 349 1053 Waiting: 243 342 106.5 328 963 Total: 268 374 116.1 349 1053 Percentage of the requests served within a certain time (ms) 50% 349 66% 367 75% 382 80% 393 90% 425 95% 490 98% 1041 99% 1053 100% 1053 (longest request)


Слайд 8

Анализ выполнения: xdebug


Слайд 9

Процесс оптимизации Создание нагрузки Анализ выполнения Внесение изменений Повторное создание нагрузки Сравнение результатов Принятие решения о внесении изменений


Слайд 10

Уменьшение количества запросов ядра продукта Статическая страница Запросы ядра продукта к базе данных Оптимизация за счет изменения программной логики Оптимизация за счет кэширования


Слайд 11

Управляемый кэш Объекты кеширования – словарные таблицы Сброс кеша – происходит автоматически Настройка – посредством набора констант Хранение - /bitrix/managed_cache Ручная очистка – на странице настройки главного модуля define("CACHED_b_lang", 3600); define("CACHED_b_option", 3600); define("CACHED_b_lang_domain", 3600); define("CACHED_b_site_template", 3600); define("CACHED_b_event", 3600); define("CACHED_b_agent", 3660); define("CACHED_menu", 3600); define("CACHED_b_file", false); define("CACHED_b_file_bucket_size", 100);


Слайд 12

Агенты и события Агенты Отправка событий Блокировка Особенности кеширования b_event b_agent


Слайд 13

b_file Класс Cfile Таблица b_file Функция ShowImage select * from b_file where ID=<file_id> define("CACHED_b_file", 3600); define("CACHED_b_file_bucket_size", 100);


Слайд 14

Управляемый LRU кеш Кеширование данных с большой вариативностью Ограничение на объем кеша


Слайд 15

Оптимизация php кода Оценка покрытия кода ядра Уменьшение числа системных вызовов Уменьшение числа вызовов функций Вынесение инвариант за пределы цикла Перестановка выражений в условиях Кэширование вычислений Наиболее ресурсоемкие функции переписаны полностью с сохранением бизнес-логики


Слайд 16

Преимущество PHP5 Поддержка autoload Использование прекомпиляторов


Слайд 17

Оптимизация модулей Интернет-магазин Опросы, голосования Блоги Валюты Техподдержка Торговый каталог Реклама, баннеры


Слайд 18

Оптимизация модулей


Слайд 19

Оптимизация модуля статистики Оптимизация кода Уменьшение количества запросов Индексы Поддержка autoload


Слайд 20

Сравнительное тестирование


Слайд 21

Рекомендации разработчикам Использование интерактивного встроенного отладчика Отладка на самых ранних стадиях разработки Нагрузочное тестирование на реальных объемах Администрирование базы данных


Слайд 22

Дальнейшие планы Оптимизация Развитие встроенного отладчика Создание системы мониторинга отслеживания медленных Страниц Компонент Запросов


×

HTML:





Ссылка: