Делимся опытом. Оптимизация производительности новостного проекта на Drupal 6

Опубликовано admin - пт, 09/13/2013 - 23:36

У одного из наших клиентов имеется новостной проект, реализованный на Drupal 6. Проект большой, трудились несколько команд разработчиков. В результате долгого и упорного труда имеется следующее:

  • количество нодов — 105 000
  • количество блоков порядка — 5 000
  • количество views — 297
  • количество дисплеев views — 944
  • количество включенных модулей — 317

Проект работает на debian squeeze, рабочая связка nginx + php-fpm, кэширование для анонимов boost, кэширование php - APC, кэширование в опертивной памяти - memcached с библиотекой php5-memcached.
Сервер: 2хXEON, 32ГБ оперативной памяти, диски SAS

Проблема

Основной проблемой является длительное время генерации страниц для авторизованных пользователей — 10 сек. и очень большое потребление оперативной памяти на каждом запросе к php-fpm — порядка 350 Мб.
С анонимами, проблем нет, так как используется boost. Но вот во время сброса кэша сервер буквально виснет, от большого количества запросов непосредственно на php-fpm.

Решение

Для решения этой проблемы было принято решение взять тестовый сервер и на нем начинать отладку проекта для устранения этих недостатков.
Первый шаг, который мы сделали это попробовали изменить библиотеку php для работы с memcached поставили вместо php5-memcached библиотеку php5-memcache. Этот шаг сразу же дал результаты: в среднем потребление памяти на одном запросе к php-fpm снизилось на порядка 70 Мб. и время генерации страницы уменьшилось до 6 сек.

Также неплохие результаты дало отключение модуля admin_menu - экономия порядка 60 Мб оперативной памяти и время загрузки страницы снизилось до 5 секунд, но 5 секунд это тоже много.

Далее мы начали отладку Drupal с помощью XHprof и вставку отладочных точек в код Drupal в результате наткнулись на баг в lightbox2 https://drupal.org/node/409354, который проявляется только при большом количестве пресетов imagecache (у нас их 81 ). После применения патча #49 время генерации страницы для авторизованного пользователя было снижено до 2 сек - на этом решили остановится.

В результате этих действий время генерации страницы для авторизованного пользователя составило 2 секунды, и потребление памяти стало 200 Мб.

Добавить комментарий

Filtered HTML

  • Допустимые HTML-теги: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.
  • Web page addresses and email addresses turn into links automatically.