Как вы улучшаете производительность Drupal?

Drupal быстро развивается, но производительность настолько слабая. Трудно достичь 50 запросов в секунду.

И есть очень много SQL-запросов на простой веб-странице. Если вы проверите время запроса формы, отправьте ее на Drupal.org, она всегда займет несколько секунд.

Как вы улучшаете скорость своего веб-сайта?

52 голоса | спросил Bruce Dou 2 MarpmFri, 02 Mar 2012 12:11:08 +04002012-03-02T12:11:08+04:0012 2012, 12:11:08

10 ответов


60

Кэширование, кеширование и кеширование.

Некоторые предложения, которые я ранее приводил к аналогичному вопросу о d.o.

  1. Полагая Лак или другой обратный прокси перед вашим http-deamon, возможно, это самая лучшая вещь, которую вы можете сделать.
  2. Во время DrupalCon Copehagen Rasmus заявил, что с использованием кеша кода операции php, такого как APC , является одной из лучших вещей, которые вы можете сделать для ускорения работы PHP в целом. Производительность улучшается с использованием новых версий PHP. Кроме того, есть дополнительные преимущества для обновления PHP при обновлении Drupal. От 6 до 8 Drupal проведет большой сдвиг в сторону ориентации объекта, что также связано с улучшением производительности в новых версиях PHP.
  3. Memcache - популярный выбор для ускорения кеша, помещая кеш в память вместо диска.
  4. Панели + Кэширование в сочетании с Действия кэша может значительно повысить производительность, даже для зарегистрированных пользователей, поскольку она поддерживает довольно сложную логику.
  5. Кэш-сущность сайта - отличное ускорение с нулевой скоростью для всех, кто использует Drupal 7.
  6. У записей с тяжелыми сайтами меньше «хорошо установленных» решений. Некоторые варианты включают.
    1. Перемещение частых записей полностью, например статистика, где-то еще, например, аналитика google.
    2. Кэширование частых операций записи с помощью настраиваемого решения в чем-то вроде NodeJS, которое будет записываться в БД раз в X-ю секунду.
    3. Пожертвуйте священный ACID и используйте базу данных, например MongoDB . (См. Комментарий Бердира ниже)
    4. Скопируйте вашу SQL-базу данных. Делает чтение из одной базы данных, пишет в другую. Это является родным для D7, а Pressflow может помочь с этим в D6.
ответил Letharion 2 MarpmFri, 02 Mar 2012 12:30:03 +04002012-03-02T12:30:03+04:0012 2012, 12:30:03
20

Это заметки из моего опыта и могут отличаться от того, что испытывают другие. Я преимущественно использую стек LAMP и в моих предложениях рассматривал то же самое.

Правила для кэширования, которые я обычно соблюдаю.

  1. Процесс после использования нескольких раз.
  2. Живи со старыми данными, когда это возможно.
  3. Очистить кеши нечасто и сохранить его очень конкретным.
  4. По возможности сделайте изменения на самом низком уровне в стеке. LAMP - DCCc: Linux, Apache, Mysql, PHP, Drupal Core, Contrib и настраиваемый модуль.

Повысить производительность сайта Drupal (в возрастающем порядке сложности)

  1. Обновите основной модуль, добавьте модуль и темы. Да, это вопросы.

  2. Установите APC на свой сервер. (Переведено вверх, основываясь на Letharion)

  3. Кэширование страниц: admin /config /development /performance Разница между минимальным временем жизни кеша и истечением кешированных страниц

  4. Блокировка кэширования https://drupal.org/project/blockcache_alter Параметры кэширования для всех блоков .
  5. Совокупные файлы javascript и css - Улучшения в интерфейсе https://www.drupal.org/project/advagg
  6. Отключить ненужные модули. Каждый модуль добавляет к количеству кода которые должны быть доступны для загрузки страницы. И это также увеличивает количество поисковых запросов. По возможности используйте общий модуль в место нескольких модулей, которые выполняют определенные функции.
  7. Содержимое кэш-контента - контентное кэширование для просмотров https://www.drupal.org/project/views_content_cache
  8. Отключить ведение журнала БД - используйте https://drupal.org/project/syslog_ng
  9. Уменьшить 404 ошибки - http://www.brokenlinkcheck.com/
  10. Fast 404 Responses - https://drupal.org/project/fast_404 - Попробуйте обработка на уровне сервера.
  11. Проверка на стороне клиента -   https://www.drupal.org/project/clientside_validation
  12. Сжатие изображения - https://www.drupal.org/project/imageapi_optimize
  13. Lazy Загрузка изображений - Не загружайте ненужные изображения - https://www.drupal.org/project/lazyloader
  14. Использование спрайтов - https://www.drupal.org/project/spritesheets

  15. Установите минимальное значение времени жизни кэша на большее число и используйте модули очистки кэша для очистки кешей для определенных страниц - Всякий раз, когда я редактирую /обновляю узел, все кэши страниц для анонимного пользователя теряются

  16. Используйте модуль Devel для просмотра запросов.
  17. Rewrite Views Queries /avoid Views, если его избыток.
  18. XHProf - https://www.drupal.org/project/XHProf
  19. FPM, HHVM.
  20. Профилирование и настройка БД - https://www.drupal.org/project/dbtuner
  21. Использовать Boost , не используйте Bootstrap DB, если это не требуется.   https://drupal.org/project/boost Для большинства малых и средних сайтов Boost хорош достаточно, и вам могут не потребоваться обратные прокси или так.
  22. Использовать CDN - https://www.drupal.org/project/cdn Его легко настраивается.
  23. Если ваши таблицы кеша огромны, используйте Memcached - если вы можете установить  memcached и настроить RAM для него, это не так сложно, как кажется.
  24. Etags - правильно настроить Etags. https: //разработчик. yahoo.com/blogs/ydnfiveblog/high-performance-sites-rule-13-configure-etags-7211.html
  25. Использовать обратный прокси-сервер - Лак (по крайней мере для активов). Помогает, если большинство ваших пользователей анонимны.
  26. Сжатый перевод - Включить gzipСжатие литий>
  27. Keep Alive - использовать постоянные соединения там, где это возможно.
  28. Прогрессивный JPEGS -
  29. CACHING IN CODE - блог Eaton - это потрясающе.   http://www.lullabot.com/blog/статьи /новички-гид-кэширование данных Друпал-7
  30. Внедрение Cache Warming - https://www.drupal.org/project/cache_warmer - Кэш. Согрейте страницы до того, как их ударит конечный пользователь.
  31. Master Slave DB Config - https://www.drupal.org/project/autoslave упрощает настройку.
  32. Кластеры базы данных - https://stackoverflow.com/questions/1163216/database-cluster- и-балансировки нагрузки
  33. Load Balancers - http://en.wikipedia.org/wiki/Load_balancing_(computing )
  34. Использовать эвристическое потепление кеша - https://www.drupal.org/project/cache_graceful
  35. Аутентифицированное кэширование пользователей - https://www.drupal.org/project/authcache
ответил Gokul N K 7 J000000Monday14 2014, 18:45:37
18

Boost также очень полезен, он создает статические кеши файлов с ваших веб-страниц. Это в основном для сайтов с большим количеством анонимного пользовательского трафика.

  

Boost обеспечивает статическое кэширование страниц для Drupal, что позволяет значительно повысить производительность и масштабируемость сайтов, которые получают в основном анонимный трафик. Для общего хостинга это ваш лучший вариант с точки зрения повышения производительности. На выделенных серверах вы можете вместо этого использовать Лак.

     

Apache полностью поддерживается, с поддержкой Nginx, Lighttpd и IIS 7. Boost будет кэшировать & gzip compress html, xml, ajax, css и amp; JavaScript. Ускорение логики вывода кеша очень продвинуто; довольно просто иметь разные времена жизни кэша для разных частей вашего сайта. Встроенный сканер гарантирует, что истекший контент быстро восстанавливается для быстрой загрузки страницы.

ответил Beebee 2 MarpmFri, 02 Mar 2012 12:48:31 +04002012-03-02T12:48:31+04:0012 2012, 12:48:31
5

Следует отметить, что если вы используете драйвер базы данных SQLIte, вам может потребоваться отключить синхронизацию диска.

/**
 * Implements hook_init().
 */
function HOOK_init() {
  db_query('PRAGMA synchronous = OFF');
}

В некоторых конфигурациях сервера это значительно улучшит производительность.

ответил ya.teck 30 MarpmSun, 30 Mar 2014 13:35:14 +04002014-03-30T13:35:14+04:0001 2014, 13:35:14
4

Секрет производительности Drupal заключается в кешировании и соблюдении хороших практик. Предложения:

Внутренний интерфейс Drupal

Внешний интерфейс Drupal

  • Минимальный запрос HTTP по:
    • Включить агрегацию JS /CSS в разделе Производительность .
    • Используйте CSS Sprites для уменьшения количества запросов изображения.
    • Используйте небольшие изображения как встроенные данные (URI в таблице стилей).
    • Используйте карты изображений , чтобы объединить несколько изображений в одно изображение.
    • Также рассмотрите возможность использования загрузки ленивых изображений (см. Image Lazyloader ).
    • Установите модуль BigPipe , чтобы уменьшить время загрузки.
    • Рассмотрим ленивую загрузку и ленивую оценку.
    • Смотрите: Использование кэша браузера - открыт!
  • Рассмотрите возможность создания некоторых JavaScript и CSS External (в некоторых случаях это быстрее).
  • Минимизировать JavaScript и CSS (см. Speedy модуль). Избегайте встроенных.
  • При обращении к JS используйте атрибуты defer или async.
  • Минимизировать количество фреймов.
  • Оптимизировать изображения, шрифты, CSS-спрайты, сделать favicon небольшим кешированием и уменьшить размер файлов cookie.
  • Уменьшить количество элементов DOM и ссылок на кеш к доступным элементам.
  • Сделайте 404 страницы быстрее, используя Fast 404 модуль.
  • Включить агрегирование и кэширование внешних компонентов с помощью Расширенное агрегирование CSS /JS .
  • Поместите стили сверху и скрипты внизу.
  • Добавьте заголовок Expires или Cache-Control , а также ETags , чтобы уменьшить ответы.
  • Используйте GET для AJAX и сделайте ихкэшируется.
  • Предварительно загружать и загружать компоненты, чтобы использовать время, в течение которого браузер не работает.
  • Иногда разделение компонентов по доменам может максимизировать параллельные загрузки.
  • Не масштабируйте изображения в HTML и не храните компоненты под 25k.
  • Избегайте фильтров, выражений CSS, элементов HTML с пустым src или href.
  • Используйте обратный прокси для отладки ваших веб-запросов (например, Charles ).
  • Используйте инструменты, такие как Y-Slow и PhantomJS для основных проверок производительности.
  • Используйте инструменты PageSpeed ​​, чтобы анализировать и оптимизировать ваш сайт.
  • Подробнее о W3C Navigation Timing specs ( GitHub ).

PHP

  • Включить кэширование PHP (например, OpCache , APC ) и настройки настройки.
  • Рассмотрите возможность использования PHP-FPM вместо mod_php плюс Nginx вместо Apache.

База данных

Сервер

Веб-сайты с высоким трафиком

Если вы ожидаете высокой загрузки вашего сайта, используйте Лак. Рассмотрим также использование CDN.

Подробнее: Опыт реального мира в масштабировании и настройке


Дополнительные ресурсы:

ответил kenorb 28 J000000Thursday16 2016, 15:13:23
3

Существует книга под названием Высокопроизводительный Drupal , который содержит лучшие практики, примеры и подробные объяснения для решения нескольких проблем производительности и масштабируемости. Вы узнаете, как применять методы кодирования и инфраструктуры для внутренних компонентов Drupal, производительности приложений, баз данных, веб-серверов и анализа производительности.

В Производительность и масштабируемость в Drupal 7 вы можете найти несколько примеров о Drupal 6 и Drupal 7 и следующем списке:

  

Проекты производительности и масштабируемости Drupal 7 для просмотра:

     
ответил Adrian Cid Almaguer 5 PM00000050000001231 2016, 17:32:12
2

Было много настроек, чтобы оптимизировать производительность вашего сайта Drupal, но не все это обязательно. Мы должны осмотреть некоторые альтернативы и методы, которые приведут к оптимизации платформы Drupal. Кэш, да, это способ оптимизировать веб-сайт с помощью различных средств, но некоторые дополнительные дополнения и советы могут увеличить и настроить ваш сайт без каких-либо трудностей, которые необходимо предпринять.

Недавно мы опубликовали аналогичную статью на нашем веб-сайте, которая, как я полагаю, поможет вам в работе по настройке.

Источник: http://www.cloudreviews.com/blog/drupal- советы по оптимизации производительности

ответил Sabih 30 Maypm13 2013, 13:29:34
2

Есть несколько возможностей улучшить скорость Drupal на разумном уровне, не устанавливая никаких новых модулей. Да, Drupal имеет конфигурацию производительности.

  1. Вы можете настроить это, выбрав: YourSiteDomain /admin /config /development /performance
  2. Включить 'страницы кэша для анонимных пользователей' в разделе Chaching
  3. Минимальное время жизни кеша: 1 день (если вы не делаете регулярных обновлений)
  4. Срок действия кэшированных страниц: 1 день (если вы не делаете регулярных обновлений)
  5. Включить «Сжатие кэшированных страниц»
  6. Включить «Скомпилировать и сжать файлы CSS»
  7. Включить «Агрегатные файлы JavaScript»

  8. После установки этих конфигураций перейдите к: YourSiteDomain /admin /reports /status

  9. Проверьте, есть ли какие-либо проблемы с разрешением для каталогов 'css' и 'js'
  10. Исправить разрешение, указанное на странице отчета о состоянии

И теперь вы закончили оптимизацию скорости для своего сайта drupal 7.

Есть несколько онлайн-инструментов для проверки скорости, чтобы проверить скорость. Обязательно используйте один из инструментов проверки скорости и запустите тест перед обновлением вышеуказанных настроек. И однажды после того, как вы обновили настройку производительности, запустите тест скорости снова. Вы обязательно увидите улучшение.

Pingdom и HTTP Fox (плагин FireFox) - лучшие инструменты для проверки скорости сайта.

Приведенные выше настройки не только кэшируют ваши страницы для анонимных пользователей, но и сжимают файлы CSS и JS. Например, если ваш сайт загружает 80 файлов, отправьте эти настройки, количество запросов сократится, по крайней мере, на 50%, поэтому здесь у вас есть 2-кратное улучшение скорости на вашем сайте Drupal.

ответил AnAnD 11 WedEurope/Moscow2013-12-11T15:17:19+04:00Europe/Moscow12bEurope/MoscowWed, 11 Dec 2013 15:17:19 +0400 2013, 15:17:19
2

В качестве стороннего разработчика всегда есть возможность улучшить ваш код, чтобы повысить производительность веб-сайта. Некоторые рекомендации для сторонних разработчиков:

1) Очистите таблицу сторожевого таймера

2) Не злоупотребляйте переменным API

3) Сделать меньше запросов HTTP /

4) Сократите свой «точечный модуль»

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

Источник: Оптимизация перед тем, как вы начнете жить

ответил targoo 7 J000000Monday14 2014, 18:37:01
2

Неоптимизированный сайт Drupal 7 с 2 ГБ ОЗУ может удовлетворительно удовлетворять 20-25 запросов в секунду. Если вы хотите выйти за рамки этого, сайт потребует некоторой настройки. То, что вы настраиваете, зависит от того, являются ли большинство пользователей на сайте анонимными или аутентифицированными. Вот что вы можете сделать для повышения производительности:

Сайт обслуживает в основном анонимных пользователей:

1) Определенно устанавливайте и настраивайте APC, memcache и entitycache.

2) Поместите прокси-сервер Varnish перед веб-сервером. Для установки и настройки требуется около 30 минут, но значительно сократит время загрузки страницы. Фактически, Varnish может обрабатывать около 300 запросов в секунду на машине емкостью 2 ГБ, если все страницы кэшируются. Используйте модуль Expire для истечения срока действия только выбранных страниц при обновлении /удалении контента.

3) Используйте расширенный модуль агрегации CSS /JS для агрегирования файлов CSS и JS. Попробуйте переместить все JS-файлы в нижнюю часть страницы. Но учтите, что это может сломать ваш сайт, чтобы реализовать это на производстве после тщательного тестирования. Также экспериментируйте с вложением критического CSS. По моему опыту, это уменьшит время загрузки страницы примерно на полсекунды.

4) У изображений CSS /JS /должно быть много будущего заголовка истечения срока действия. Это гарантирует, что браузеры не будут запрашивать одни и те же CSS /JS /изображения снова и снова.

5) Убедитесь, что веб-сервер обслуживает сжатые страницы /CSS /JS.

После выполнения вышеуказанных 5 шагов ваш сервер с 2 ГБ оперативной памяти должен иметь возможность легко отправлять 50 запросов в секунду.

Сайт обслуживает пользователей, прошедших проверку подлинности:

Оптимизация такого сайта более сложна. Такие сайты попадают в одну из двух подкатегорий для целей оптимизации:

(a) Большинство страниц на сайте идентичны, за исключением 1 или 2 блоков, которые имеют пользовательскую информацию. Напр. Сайт Drupal Commerce.

(b) Большинство страниц полностью настроены для пользователя. Напр. Сайт Drupal Commons.

Если ваш сайт попадает в категорию (a), тогда примените большинство методов, которые мы обсуждали для сайта, обслуживающего в основном анонимных пользователей. Единственное различие заключается в том, что для страниц, не относящихся к администратору, Varnish должен будет удалить cookie SESSION из заголовка и обслуживать кешированные страницы. Используйте модуль блока AJAX для блоков сервера с пользовательской информацией, используя AJAX. Таким образом, большая часть страницы будет очень быстро использоваться с использованием Varnish, и тогда пользовательская информация будет передаваться через AJAX.

Если ваш сайт попадает в категорию (b), используйте модуль Authcache. Я предпочитаю не использовать его как можно больше, потому что он требует довольно небольшой конфигурации и обслуживания. Но это действительно хорошо работает. Это будет не так быстро, как использование Varnish, но он сможет обрабатывать 50 запросов в секунду, которые вы ищете.

Если вы хотите перейти выше и дальше того, что мы обсудили здесь, посмотрите на «Контрольный список оптимизации производительности Drupal» . Раскрытие: Это написано мной. Он приводит исчерпывающий список вещей, которые вы можете сделать, чтобы сайт Drupal быстро вспыхнул.

ответил Neerav Mehta 5 J000000Sunday15 2015, 19:31:05

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132