увеличение скорости сайта drupal
Я использую сайт drupal с темой из rockettheme.
Пользователи являются пользователями-участниками. Проблема в том, что по неизвестной причине сайт работает очень медленно. Открытие страницы занимает около 20 секунд.
Я пробовал переключать VPS, но никакого увеличения производительности.
Я не использую много модулей, которые бы загромождали сайт.
Какие возможные решения я должен рассмотреть, чтобы увеличить скорость сайта, чтобы он открывался в обычное время.
Выполнено 120 запросов за 113,52 миллисекунды. Выделяются запросы, занимающие более 5 мс, и запросы, выполненные более одного раза. Время выполнения страницы составило 2534,15 мс.
Выполнил 87 запросов за 24,6 миллисекунды. Выделяются запросы, занимающие более 5 мс, и запросы, выполненные более одного раза. Время выполнения страницы составило 2609,59 мс.
Выполнил 123 запроса за 41,05 миллисекунды. Выделяются запросы, занимающие более 5 мс, и запросы, выполненные более одного раза. Время выполнения страницы составляло 1282.27 мс.
Я не думаю, что это нормально.
6 answers
Обновление:
Я нашел один конкретный файл mootools.js загрузка в ylsow занимает много времени, но открытие файла напрямую - задержки нет.
В конце концов, это довольно хороший намек - действительно ли требуется MooTools? Drupal использует jQuery исключительно в ядре, и большинство добавляемых модулей делают то же самое, поэтому, пожалуйста, имейте в виду, что использование более чем одной основной платформы JavaScript одновременно, хотя и возможно, как правило, не рекомендуется большинством разработчики, как правило, требуют специальной обработки по крайней мере и могут создавать всевозможные странные (т.Е. трудные для отладки) проблемы независимо от того:
Вы найдете множество связанных сообщений в jQuery+MooTools о переполнении стека, см. Этот примерный ответ на Mootools и интеграцию jQuery, в котором конкретно упоминаются огромные замедления страниц.
Учитывая, что вы не используете много модулей Я полагаю, что требуется только изолированная область функциональности В частности, MooTools, поэтому я предлагаю вам полностью отключить это (т. Е. Убедиться, Что mootools.js больше не загружается) и посмотрите, имеет ли это какое-либо значение.
Вы можете ознакомиться с различными ответами на соответствующий вопрос о переполнении стека - хотя они в основном совпадают с приведенными здесь, тем временем в комментариях здесь и там есть некоторые дополнительные сведения.
Кроме этого, я хотел бы еще раз подчеркнуть одну важную вещь, как упомянутый недовольным Гоутом и bpeterson76 уже в некоторой степени (+1 каждый):
Несмотря на то, что Drupal изначально не является самой быстрой CMS, время загрузки страницы, которое вы видите , вообще не является нормальным (хотя это возможно на плохо настроенных системах/ серверах) - поэтому вам действительно следует проанализировать и определить причину(причины) в первую очередь , прежде чем применять какие-либо оптимизации! Конечно, некоторые рекомендуемые оптимизации могут помочь даже без этого, но золотое правило для оптимизация производительности (и других) на самом деле заключается в понимании проблемы, а не в методе проб и ошибок.
Чтобы вы начали, я хотел бы прокомментировать три темы, поднятые конкретно, и предоставить указатель на более подробную документацию по данному вопросу ниже:
Я пробовал переключать VPS, но никакого увеличения производительности
- Хорошо, все же вам следует явно проверить, нормально ли работают используемые VPS и стек ЛАМП в первую очередь (т. е. без Drupal)?
- Ответ от bpeterson76 касается возможных причин.
Я думаю, что главный виновник - это тема.
- Затем вы должны проверить это предположение, что легко сделать, переключившись на другую тему, предпочтительно с известными характеристиками производительности, например, тему гирлянды по умолчанию.
Я не думаю, что SQL-запрос виноват.
- Вы уже поняли, что вы следует также проверить это предположение - к этому можно подойти по-разному, я бы начал с модуля devel, в котором есть различные предложения относительно ведения журнала производительности, включая Время выполнения SQL (конечно, полезно и другое).
- Пожалуйста, обратите внимание, что для более точного времени выполнения SQL вам следует прибегнуть к специальным инструментам для используемой системы баз данных.
Все это и многое другое решается с помощью Кэширование, скорость и производительность Drupal - этот концентратор ресурсов может показаться ошеломляющим на первый взгляд, но, как я уже сказал понимание проблемы является ключевым для решения проблем с производительностью - чтобы в конечном итоге начать все сначала, я специально рекомендую прочитать Соображения по настройке сервера, в частности раздел Понимание и настройка вашего стека для повышения производительности.
Удачи!
Если загрузка страницы составляет 20 секунд, то, скорее всего, где-то есть серьезное узкое место. APC может сократить его до 5-10 секунд, но этого все равно недостаточно для серверной части. И это не поможет, если узким местом будет SQL-запрос.
Модули могут немного замедлить работу сайта, но не настолько сильно. Попробуйте отключить каждый из них по очереди, чтобы увидеть, есть ли какие-либо значительные улучшения.
Другое решение, если вы не можете значительно повысить скорость, - это как можно больше кэшировать страницы. С различные сайты (с использованием CodeIgniter) Я обнаружил, что это имеет ОГРОМНОЕ значение - сервер реагирует мгновенно, и у вас действительно есть время на стороне клиента.
В зависимости от того, что вы включаете в 20-секундную задержку (т.Е. Только на стороне сервера или также на стороне клиента), вы можете найти страницу с рекомендациями Yahoo полезной.
Чтобы определить, где находится узкое место, поищите модули профилировщика для Drupal (если таковые имеются), они скажут вам, в каких частях кода медленный. Или вы можете добавить свой собственный код синхронизации в шаблон:
$time1 = microtime();
// some chunk of code
$time2 = microtime();
// another chunk of code
$time3 = microtime();
echo 'First chunk: ', ($time2-$time1/1000), ' seconds';
echo 'Second chunk: ', ($time3-$time2/1000), ' seconds';
Повторите это в разных местах, и вы сможете сузить его до одного или двух разделов, которые выполняются в течение 10-20 секунд.
При создании PHP-приложений я обнаружил, что могу устранять узкие места низкого уровня с помощью инструментов разработчика Firefox или Chrome. Перейдите на вкладку ресурсы и посмотрите, как загружаются элементы страницы. Это особенно ценно, когда вы работаете с запросами XHR (AJAX).
Начните с пинга сервера. У меня есть машина разработчика, которая была в аналогичной ситуации на днях.... Машина разработчика ползает, загружается более 10 секунд. Но у меня есть идентичный код на другом идентичном (но выделенный) сервер работает молниеносно. Проводя тесты на пинг, это мучительно медленно. Оказывается, машина является общей, и один из других пользователей с учетной записью на сервере запускает сайт со сверхвысокой пропускной способностью (вероятно, сайт для взрослых), который замедляет работу всех остальных. Этот сайт-нарушитель теперь удаляется хостом.
Xdebug, безусловно, является хорошим вариантом, как упоминалось выше. Но это не всегда приводит к источнику проблемы, если не возникают ошибки. Я бы начал сначала просмотрите журнал ошибок, убедитесь, что больше не создается. Затем Xdebug.
Я бы последовал за отключением функций по одному. Кроме того, было бы целесообразно отслеживать загрузку сервера, чтобы убедиться, что что-то не связанное не тормозит процессы MySQL или Apache.
Наконец, если проблема все еще не устранена, я бы выделил области, которые, по моему мнению, вызывают проблему, и вставил метки времени начала/окончания микро-времени, которые я вывожу в журнал или по электронной почте. Это звучит глупо просто, но я нашел 200%+ при использовании этого метода повышается производительность кода.
Включено ли кэширование в /admin/settings/performance
?
Стоит дважды проверить, прежде чем переходить к более сложным решениям.
Я рекомендую использовать Postgresql, drupal поддерживает его.