увеличение скорости сайта drupal


Я использую сайт drupal с темой из rockettheme.

Пользователи являются пользователями-участниками. Проблема в том, что по неизвестной причине сайт работает очень медленно. Открытие страницы занимает около 20 секунд.

Я пробовал переключать VPS, но никакого увеличения производительности.

Я не использую много модулей, которые бы загромождали сайт.

Какие возможные решения я должен рассмотреть, чтобы увеличить скорость сайта, чтобы он открывался в обычное время.

Выполнено 120 запросов за 113,52 миллисекунды. Выделяются запросы, занимающие более 5 мс, и запросы, выполненные более одного раза. Время выполнения страницы составило 2534,15 мс.

Выполнил 87 запросов за 24,6 миллисекунды. Выделяются запросы, занимающие более 5 мс, и запросы, выполненные более одного раза. Время выполнения страницы составило 2609,59 мс.

Выполнил 123 запроса за 41,05 миллисекунды. Выделяются запросы, занимающие более 5 мс, и запросы, выполненные более одного раза. Время выполнения страницы составляло 1282.27 мс.

Я не думаю, что это нормально.

Author: Community, 2010-09-21

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 - этот концентратор ресурсов может показаться ошеломляющим на первый взгляд, но, как я уже сказал понимание проблемы является ключевым для решения проблем с производительностью - чтобы в конечном итоге начать все сначала, я специально рекомендую прочитать Соображения по настройке сервера, в частности раздел Понимание и настройка вашего стека для повышения производительности.

Удачи!

 1
Author: Steffen Opel, 2017-05-23 12:37:06

Если загрузка страницы составляет 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 секунд.

 4
Author: DisgruntledGoat, 2010-09-22 16:31:40
  • Используйте кэш кода операции, например APC
  • Используйте такой инструмент, как xdebug, чтобы увидеть, где находятся ваши узкие места. Таким образом, вы знаете, что вам нужно решить, а не просто гадать.
 3
Author: John Conde, 2010-09-21 17:59:00

При создании PHP-приложений я обнаружил, что могу устранять узкие места низкого уровня с помощью инструментов разработчика Firefox или Chrome. Перейдите на вкладку ресурсы и посмотрите, как загружаются элементы страницы. Это особенно ценно, когда вы работаете с запросами XHR (AJAX).

Начните с пинга сервера. У меня есть машина разработчика, которая была в аналогичной ситуации на днях.... Машина разработчика ползает, загружается более 10 секунд. Но у меня есть идентичный код на другом идентичном (но выделенный) сервер работает молниеносно. Проводя тесты на пинг, это мучительно медленно. Оказывается, машина является общей, и один из других пользователей с учетной записью на сервере запускает сайт со сверхвысокой пропускной способностью (вероятно, сайт для взрослых), который замедляет работу всех остальных. Этот сайт-нарушитель теперь удаляется хостом.

Xdebug, безусловно, является хорошим вариантом, как упоминалось выше. Но это не всегда приводит к источнику проблемы, если не возникают ошибки. Я бы начал сначала просмотрите журнал ошибок, убедитесь, что больше не создается. Затем Xdebug.

Я бы последовал за отключением функций по одному. Кроме того, было бы целесообразно отслеживать загрузку сервера, чтобы убедиться, что что-то не связанное не тормозит процессы MySQL или Apache.

Наконец, если проблема все еще не устранена, я бы выделил области, которые, по моему мнению, вызывают проблему, и вставил метки времени начала/окончания микро-времени, которые я вывожу в журнал или по электронной почте. Это звучит глупо просто, но я нашел 200%+ при использовании этого метода повышается производительность кода.

 2
Author: bpeterson76, 2010-09-22 14:04:54

Включено ли кэширование в /admin/settings/performance ?

Стоит дважды проверить, прежде чем переходить к более сложным решениям.

 1
Author: WalterJ89, 2010-09-22 07:37:04

Я рекомендую использовать Postgresql, drupal поддерживает его.

 0
Author: NARKOZ, 2010-10-21 22:07:50