Upload
drupalcampdn
View
827
Download
2
Embed Size (px)
Citation preview
Drupal Perfomance issues, tips & tricks
Антон Иванов
http://donetsk.drupal.ua
Drupal Perfomance issues, tips & tricks
Раздел 1
Полезные мелочи о которых не стоит
забывать
Оптимизация доступная«Из коробки»
Оптимизация CSS файлов Оптимизация Java Script файлов Кеширование страниц Кеширование блоков
Настраиваем автоматический запуск Cron
Периодические действия модулей Очистка таблиц Логов и Сессий Poormanscron
Оптимизация которую мы делаем сами
Включены только используемые модули Наблюдаем за размерами таблиц Логов Пишем оптимальный код Кешируем кастомный код
Оптимизация использования модуля Locale
Нативный язык Drupal – английский Перевод одной строки = 1 запрос в БД $conf['locale_custom_strings_ru'] = array(
'оригинальная строка' => 'перевод', …);
Используем Pressflow
http://pressflow.org/ Репликация БД ”Внешнее” кеширование страниц Ускорено определение алиасов путей Интегрировано тестирование SimpleTest Сессии для анонимов не создаются
Раздел 2
Оптимизация производительности на Shared Hosting
Учитываем требования к хостингу со стороны Drupal
http://drupal.org/requirements Web server: Apache 1.3, 2.x, IIS 5, 6, 7 Database: >= MySQL 4.1, >= PostgreSQL 7.1 PHP: >= 5.2, memory_limit >= 32MB Disk space: >= 40 MB
Модуль Сacherouter
http://drupal.org/project/cacherouter Хранение кеша не в БД Файловый Кеш Кеширование частей сайта Прост в настройке Прирост производительности 7-15%
Модуль Boost
http://drupal.org/project/boost Для анонимусов Сложен в настройке Кеширует страницу целиком Не для многостраничных сайтов 10 000+ Прирост производительности 2-3 порядка
Раздел 3
Оптимизация высоконагруженных
сайтов
Ускорение работы PHP
Кеширование опкода APC XCache eAccelerator (в среднем на 45%)
Использование таблиц InnoDB вместо MyISAM
35-40% запросов - INSERT или UPDATE MyISAM – блокировка на уровне таблицы InnoDB – блокировка на уровне строки search_* и menu_router – только MyISAM Слабо нагруженые сайты прирост 3-5% Высоко нагруженые – в среднем 30%
Репликация Базы Данных
Master + 1 и более Read реплик Перевести таблицы на InnoDB Друпал + Патч или Pressflow Pressflow + mysqlautorwsplit.patch Снижение нагрузки на БД на 45% Прирост производительности 25%
Модуль Memcache
Memcache или Memcached вместо БД Hit ~80%, Miss ~20% Прост в настройке Прирост производительности 100-400%
Использование Nginx
Отдача статики через Nginx Уменьшение запросов к Apache Решает проблему ”Медленного канала” Кеширование HTML Нет модуля Drupal для очистки кеша Nginx
Использование Varnish
Реверсивный HTTP прокси Только с Pressflow http://drupal.org/project/varnish Проблемы с формами Огромный прирост
производительности
Раздел 4
Резюме
Общие советы
Включаем оптимизацию CSS и JS файлов Кеширование блоков и страниц Автозапуск Cron Пишем оптимальный код и кешируем его
(если нужно) Locale (избавляемся от запросов к БД) Pressflow Правильно выбираем Хостинг CacheRouter или Boost
Для высоконагруженных сайтов
Кеширования опкода PHP (APC, XCache или eAccelerator)
Таблицы БД InnoDB вместо MyISAM Репликация БД Memcache Nginx или Varnish