У нас в Drupal-coder.ru появился новый клиент на оптимизацию Drupal и дальнейшую поддержку.
Это большой региональный портал. У клиента сайт временами сильно тормозил и падал, хотя размещен у известного Drupal хостера. Из-за этих тормозов и невозможности получения root доступа у хостера мы решили перенести сайт на наш виртуальный сервер и разобраться в причинах торможения. Сервер настроили в следующем варианте Nginx + Apache + Mysql + PHP + Memcached + APC.
После переноса выяснилось, что сайт и у нас сильно тормозит. Страницы генериловались по 17 секунд, при этом запрос к базе выполнялся всего 650 мс, остальное время Apache грузил процессор на 100%.
Исходя из полученных результатов мы сделали вывод, что есть какие-то проблемы с самим сайтом, поэтому решили воспользоваться XHprof для профилирования Drupal и нахождения узких мест сайта.
После профилирования сайта выяснилась причина серьезных тормозов: кэш темы не помещался в memcached из-за ограничения 1 MB на 1 объект в кэше.
В результате для ускорения мы приняли решение добавить в settings.php параметр для сжатия объектов кэша до помещения в memcached.
$conf['memcache_options'] = array( Memcached::OPT_COMPRESSION => TRUE, );
Еще как вариант можно увелить ограничение 1MB на один объект, сделать это можно следующим образом:
добавить в /etc/memcached.conf параметр
-I 2MB
Увеличиваем максимальный размер одного объекта кэша до 2 MB.