Оптимизация

Содержание

Слайд 2

Проблематика

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

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

Слайд 3

Цель

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

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

Слайд 4

Инструменты

xdebug отладчик, представляющий собой расширение php.
Kcachegrind инструмент, визуально представляющий информацию, собранную отладчиком
$DBDebugToFile переменная, определяемая в файле

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

Слайд 5

Интерактивный отладчик

show_page_exec_time=Y
show_include_exec_time=Y
show_sql_stat=Y

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

Слайд 6

Платформа

Intel Celeron 2.5GHz / 512Mb RAM
ОС: Debian sid 2.6.18
БД: Mysql 5.0.24 (стандартная сборка/пакет

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

Слайд 7

Процесс оптимизации

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

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

Слайд 8

Создание нагрузки: ab

ab -n 100 -c 5 http://192.168.0.43:4004/about/index.php
This is ApacheBench, Version 2.0.41-dev

Создание нагрузки: ab ab -n 100 -c 5 http://192.168.0.43:4004/about/index.php This is ApacheBench,
<$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)

Слайд 9

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

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

Слайд 10

Процесс оптимизации

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

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

Слайд 11

Уменьшение количества запросов ядра продукта

Статическая страница
Запросы ядра продукта к базе данных
Оптимизация за

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

Слайд 12

Управляемый кэш

Объекты кеширования – словарные таблицы
Сброс кеша – происходит автоматически
Настройка – посредством

Управляемый кэш Объекты кеширования – словарные таблицы Сброс кеша – происходит автоматически
набора констант
Хранение - /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);

Слайд 13

Агенты и события

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

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

Слайд 14

b_file

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

b_file Класс Cfile Таблица b_file Функция ShowImage select * from b_file where

Слайд 15

Управляемый LRU кеш

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

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

Слайд 16

Оптимизация php кода

Оценка покрытия кода ядра
Уменьшение числа системных вызовов
Уменьшение числа вызовов функций
Вынесение

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

Слайд 17

Преимущество PHP5

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

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

Слайд 18

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

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

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

Слайд 19

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

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

Слайд 20

Оптимизация модуля статистики

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

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

Слайд 21

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

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

Слайд 22

Рекомендации разработчикам

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

Рекомендации разработчикам Использование интерактивного встроенного отладчика Отладка на самых ранних стадиях разработки
реальных объемах
Администрирование базы данных
Имя файла: Оптимизация.pptx
Количество просмотров: 142
Количество скачиваний: 0