drupal 6 performance

22
Drupal Perfomance issues, tips & tricks Anton Ivanov WDG Company

Upload: anton-ivanov

Post on 26-Jan-2017

153 views

Category:

Education


0 download

TRANSCRIPT

Drupal Perfomance issues, tips & tricks

Anton Ivanov

WDG Company

Раздел 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

Спасибо за внимание

skype: antonnaviemail: [email protected]