Как ускорить загрузку кеша в mta

Обновлено: 21.11.2024

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

Как работает кэширование?

Данные в кэше, как правило, встречаются с быстрым доступом, например, как ОЗУ (оперативное запоминающее устройство), и объединяются совместно с программными компонентами. Основная функция кэша – ускорение процесса извлечения данных. Он избавляет от необходимости обращаться к менее скоростному базовому обеспечению хранения.

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

Обзор кэширования

ОЗУ и работающие в сервисы памяти. Выявление ОЗУ и работающие в памяти сервисы повышают показатели скорости обработки доходов или операций ввода-вывода в секунду (количество операций ввода-вывода в секунду), Для аналогичного масштаба работы с использованием различных баз данных и оборудования на базе жестких дисков требуются дополнительные ресурсы. Использование ресурсов, требующих увеличения расхода, но все равно не позволяющих получить такую ​​задержку, которая требует кэширования в памяти.

Шаблоны проектирования. В среде распределенных вычислений выделенный уровень кэширования позволяет системе и приложениям работать независимо от кэширования. При этом их жизненные циклы не имеют свойств кэша. Кэш служителей центрального уровня, к которым обращаются различные несвязанные между собой системы. Он имеет собственный жизненный цикл и архитектурную топологию. Это особенно важно для систем, в окружении приложений можно масштабировать обе стороны. Если кэш находится на том же узле, что и приложение или система, которые могут быть обнаружены, масштабирование может привести к разрушению кэша. Кроме того, если использовать локальные кэши, это дает преимущества только локальным приложениям, которые получают данные. В распределенной среде кэширования данные охватывают множество серверов кэширования и размещаются в центральном расположении, удобном для всех потребителей данных.

Рекомендации по кэшированию. При реализации уровня кэширования необходимо обратить особое внимание на кэшируемость данных. Эффективный кэширование частоты запросов, наличие в кэше запрашиваемых данных. Промах кэша происходит, когда запрашиваемых данных в кэше нет. Для удаления из кэша неактуальных данных применяются такие механизмы, как TTL (время жизни). Также следует понимать, что для кэширования среды требуется высокая доступность. Если необходимо, можно использовать сервисы в памяти, такие как Redis. В случае обнаружения уровня в памяти можно использовать как отдельный уровень хранения данных, в отличие от кэширования из хранилища. Чтобы решить, подходит ли такой вариант, необходимо определить для данных в сервисе значения времени RTO (требуемое время восстановления, то есть количество времени требуется система на восстановление после страха) и RPO (требуемая восстановление, то есть последняя точка восстанавливаемая точка или транзакция) . Для соответствия большинству безопасности RTO и RPO можно применять характеристики и проектные стратегии различных служб в памяти.

Ускорение получения веб-контента от веб-сайтов (браузеры или устройства)

Кэширование с помощью Amazon ElastiCache

Веб-сервис Amazon ElastiCache развертывание, запуск и масштабирование в облаке хранилища или кэша в памяти. Сервис повышает производительность интернет-приложений, позволяет получать данные из быстро управляемых хранилищ данных, размещенных только в памяти, а не из баз данных, размещенных на дисках и не так быстро. Информацию о том, как реализовать эффективную часть кэширования, см. в этом техническом описании по кэшированию в памяти.

Преимущества кэширования

Повышение производительности приложений

Поскольку память работает в разы быстрее диска (магнитного или SSD), чтение данных из кэша в памяти производится очень быстро (за долю миллисекунды). Это значительно увеличивает доступ к данным и повышает производительность приложений.

Сокращение затрат на базы данных

Один инстанс кэша может привести к уменьшению объемов поступающих средств, что в результате приводит к значительным расходам. Это особенно важно, если плата требует пропускной способности данных. В таких случаях можно сократить расходы на десятки процентов.

Снижение нагрузки на серверную часть

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

Прогнозируемая производительность

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

Устранение проблемных мест в базах данных

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

Повышение пропускной способности операций чтения (количество операций ввода-вывода в секунду)

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

Александр Дрок

Оптимизация ускорения Magento 2 — очень важный шаг, если вы хотите увеличить посещаемость вашего магазина. Иногда владельцы магазинов уделяют много внимания дизайну, продажам или маркетингу в социальных сетях, но совершенно забывают о производительности сайта. Важно помнить, что скорость сайта формирует первое впечатление, и это трудно изменить. Узнайте больше об ускорении работы Magento 2 в нашем блоге «5 причин ускорить работу вашего магазина Magento 2».

1. Системные требования Magento 2

Сервер является ядром, и если конкретный сервер, который вы выбрали, не работает бесперебойно, у вас не будет хорошей скорости веб-сайта, независимо от ваших усилий и всех других советов из этой или других статей.

Прежде чем начать оптимизацию производительности в Magento 2, мы настоятельно рекомендуем вам разместить свой магазин на выделенном сервере. При выборе хоста проверьте следующие категории:

  • Используйте выделенный сервер или VPS, не выбирайте общий хостинг;
  • Убедитесь, что ваш сервер соответствует системным требованиям для Magento 2. Для Magento 2.4 требуется следующее:

Операционные системы: Linux x86-64. Дистрибутивы Linux, такие как RedHat Enterprise Linux (RHEL), CentOS, Ubuntu, Debian и т. д.

Composer: последняя стабильная версия. Composer требуется разработчикам, которые хотят внести свой вклад в кодовую базу Magento 2, или всем, кто хочет разрабатывать расширения Magento.

Веб-серверы: Apache 2.4 с включенными mod_rewrite и mod_version или nginx 1.x.

База данных: MySQL 8.0.

PHP: 7.4.x, за исключением 7.4.2: в этой конкретной версии есть ошибка рендеринга сообщений.

Необходимые расширения PHP: ext-bcmath, ext-ctype, ext-curl, ext-dom, ext-gd, ext-hash, ext-iconv, ext-intl, ext-mbstring, ext-openssl, ext-pdo_mysql. , ext-simplexml, ext-soap, ext-xsl, ext-zip, ext-sockets.

PHP OPcache: Magento настоятельно рекомендует включить его для обеспечения наилучшей производительности. Вы можете проверить, включена ли она на вашем сервере, следуя официальным рекомендациям Magento PHP здесь.

Настройки PHP: Magento рекомендует очень конкретную конфигурацию PHP, например. memory_limit , что помогает предотвратить распространенные проблемы. Вы можете проверить самый последний список конфигураций здесь.

Elasticsearch: Magento перешла на эластичный поиск с MqSQL в версии 2.4.0, поэтому он должен быть установлен на вашем сервере.Платформа рекомендует использовать Elasticsearch 7.6.x.

Системные зависимости: bash, gzip, lsof, mysql, mysqldump, nice, php, sed, tar.

Почтовый сервер: агент пересылки почты (MTA) или SMTP-сервер.

Magento также может использовать следующие технологии повышения производительности:

  • Redis версии 5.0 для кэширования страниц
  • Varnish версии 6.x для кэширования страниц
  • RabbitMQ 3.8.x
  • (Только для Magento Commerce) Разделение баз данных для лучшей масштабируемости.

Эти требования могут измениться в будущем. Самую последнюю информацию можно найти на странице официальной документации Magento.

2. Включить плоские категории и продукты

Одной из основных причин проблем со скоростью Magento является скорость чтения базы данных.

Чтобы увеличить скорость чтения базы данных, следует включить плоский каталог. Это уменьшит количество объединений (объединений между таблицами) при показе товаров. За счет этого уменьшится сложность запросов MySQL.

Перейдите в бэкэнд, МАГАЗИНЫ -> Конфигурация -> КАТАЛОГ -> Каталог -> Использовать категорию плоского каталога и введите «Да»

3. Объединение файлов CSS и JS

Огромные файлы CSS и JS: они не только украшают ваш интерфейс, но и снижают скорость загрузки вашего сайта. К счастью, в Magento 2 есть способ уменьшить их влияние.

Не забудьте нажать Save Config после того, как закончите!

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

4. Сеть доставки контента

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

Существует много типов CDN, просто просмотрите предоставляемые функции, географическое покрытие и выберите тот, который вам нравится.

Одной из функций Magento 2 является встроенная поддержка CDN, и здесь вы можете найти настройки для нее: МАГАЗИНЫ -> ОБЩИЕ -> Конфигурация -> Интернет -> Базовые URL-адреса (безопасные)< /p>

5. Кэширование

Кэширование также может значительно ускорить работу Magento 2 на локальном хосте. В Magento 2 есть множество вариантов кэширования, и вы можете найти их здесь: СИСТЕМА -> Управление кэшем

Здесь вы найдете параметры кэширования вашего магазина Magento. Нажмите на те, которые вам нужны, выберите параметр «Включить» и нажмите «Отправить кеш страницы», и в результате вы значительно сократите время отклика сервера и общее время загрузки страницы.

Но M2 создает экземпляр кеша для каждой страницы (категории, товары и т. д.) только после посещения этой страницы, и обычно время жизни кеша меньше одного дня.

Модуль Page Cache Warmer для Magento 2 может автоматически посещать страницы без кеша и подогревать кеш для этих страниц.

6. Оптимизация изображений

Перед загрузкой любого изображения убедитесь, что оно сжато – нет необходимости в больших изображениях, выходящих за рамки возможностей вашего макета.

Кроме того, выберите формат, который наилучшим образом соответствует вашим потребностям. Для ускорения электронной коммерции Magento 2 с огромным количеством изображений продуктов еще более важно не перегружать сайт. У нас есть для вас следующее предложение: используйте формат JPEG для изображений продуктов. Он больше подходит для изображений, чем другие форматы, так как вы можете пожертвовать качеством ради уменьшенного размера. С другой стороны, использование PNG или SVG для макета и логотипа намного выгоднее, поэтому используйте каждый из них соответственно!

Если вы уже используете изображения .jpg для каталога, вы можете уменьшить размер изображения с помощью утилиты pngquant (уменьшает размер изображения до 80%).

Эта простая команда сожмет все изображения .jpg в папке /pub/media:

7. Обновления Magento

Маленький простой совет: не забудьте обновить свой магазин. Команда Magento постоянно работает над улучшением производительности, так что не упустите ничего!

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

Что такое веб-кеш?

Веб-кэширование — это технология, которая ускоряет работу веб-страницы после ее первого просмотра.Кэширование обеспечивает это путем временного хранения статических ресурсов (таких как изображения, HTML, CSS и JavaScript) с веб-страницы, чтобы к ним можно было легко получить доступ позже.

Правильное использование кеша может повысить производительность веб-сайта, а более быстрый веб-сайт может привести к более высокому коэффициенту конверсии.

Типы веб-кэшей

Что касается веб-кэширования, существует два основных типа: кэширование браузера и кэширование сервера.

Кэширование браузера

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

Без запроса файла, как браузер регистрируется, если содержание веб-сайта обновлено? Если кеширование браузера выполнено неправильно, пользователь увидит устаревшую версию сайта.

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

Иногда могут возникать проблемы с кэшированием, даже если используются заголовки ETag и Expires. В этом случае пользователи могут вручную очистить свой кеш, выполнив аппаратное обновление. Жесткое обновление может быть выполнено комбинацией нажатий клавиш. Поскольку это зависит от браузера и операционной системы, вы сможете найти комбинацию для своего браузера и операционной системы, выполнив быстрый поиск в Интернете.

Кэширование сервера

Когда браузер делает запрос к веб-странице, сервер обрабатывает запрос и отправляет ответ обратно в браузер. При кэшировании сервера после обработки запроса сервер запоминает его для следующего раза, когда ему нужно будет доставить те же данные.

Подобно тому, как кэширование браузера запоминает, что он загрузил, сервер запоминает то, что он отправил, и может отправить это снова, не обрабатывая запрос. Это означает, что пользователь получит ресурсы гораздо быстрее, чем будет ждать, пока сервер снова обработает запрос.

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

Полное кэширование страниц и кэширование объектов являются серверными методами. Полный кеш страниц — это когда сервер запоминает всю страницу. Кэш объектов, однако, запоминает только части страницы. Полное кэширование страниц полезно для статического контента, такого как сообщение в блоге, тогда как кэширование объектов более полезно для ресурсоемкого контента, такого как результаты запроса к базе данных.

Заключение

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

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

Пользователи могут тратить больше времени на фактическое использование вашего веб-сайта (и, возможно, на превращение в потенциальных клиентов), а не на ожидание отображения страниц или получения ответа от сервера. Если ваш сайт еще не использует кеш, обратитесь к экспертам Hall или своему веб-администратору, чтобы настроить его, так как он предлагает слишком много преимуществ, чтобы отказываться от них.

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

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

Оптимизация MySQL

Большинство сайтов drupal, в том числе работающих в размещенных средах, таких как Acquia, работают на MySQL. Учитывая, что Drupal 7 использует механизм хранения InnoDB по умолчанию, есть несколько параметров конфигурации MySQL и InnoDB, которые могут иметь огромное значение.

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

Буферный пул InnoDB

Пул буферов InnoDB можно рассматривать как еще один уровень кэширования; между файловой системой и базой данных. Однако это очень интеллектуальный кеш, и InnoDB использует множество сложных алгоритмов для управления его содержимым. Размер пула буферов InnoDB контролируется параметром innodb_buffer_pool_size.

В идеальном мире для пула буферов InnoDB будет выделено достаточно памяти, чтобы в него поместились все ваши данные. Один из способов подсчитать, сколько места на диске в настоящее время использует схема, — запрос, аналогичный следующему:

SELECT table_schema,
table_schema,
Concat(sum(Round(data_length / ( 1024 * 1024 ), 2)), 'Mb')
AS data_length_mb,
Concat (sum(Round(index_length / ( 1024 * 1024 ), 2)), 'Mb')
AS index_length_mb,
Concat(sum((Round(Round(data_length + index_length) / ( 1024 * 1024 ), 2))), 'Mb')
AS total_size_mb
FROM
information_schema.TABLES
ГДЕ
table_schema = '?'
ГРУППИРОВАТЬ ПО
table_schema;

Выполнение этого запроса на крошечной схеме приведет к выводу, подобному следующему:

*************************** 1-я строка ******************* **********
table_schema: drupal
data_length_mb: 18.82Mb
index_length_mb: 13.76Mb
total_size_mb: 32.00Mb

Если бы мы хотели выделить достаточно памяти для буферного пула InnoDB, чтобы содержать все эти данные, мы бы установили для innodb_buffer_pool_size значение 512M (это легко покроет эту крошечную схему).

Эффективность пула буферов InnoDB можно отслеживать с течением времени, отслеживая выходные данные команды SHOW INNODB STATUS. В частности, вы увидите раздел, посвященный буферному пулу InnoDB, в котором показана частота попаданий в буферный пул.

Кэш запросов

Кэш запросов MySQL хранит полные наборы результатов для операторов SELECT. Перед разбором SQL-запроса MySQL проверяет, содержится ли он в кэше запросов. Это довольно грубая проверка, и если запрос хоть немного отличается, это считается промахом кеша. Тем не менее, если есть попадание в кеш, результаты могут быть возвращены немедленно, что значительно улучшит время выполнения запросов.

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

Если вы решите включить кеш запросов, количество попаданий в кеш можно рассчитать путем мониторинга с использованием различных переменных состояния следующим образом:

Qcache_hits / (Qcache_hits + Com_select)

Еще одна переменная состояния, которую нужно отслеживать, — Qcache_inserts. Если Com_select и Qcache_inserts относительно близки по размеру, это указывает на то, что происходит много промахов кеша.

По умолчанию кэш запросов в MySQL отключен (по крайней мере, начиная с версии 5.5). Если мы решим включить этот кеш для сайта, мы ограничим его размер примерно до 50 МБ. Конфигурация размера кэша запросов управляется параметром query_cache_size.

Временные таблицы на диске

Часто исполняющему движку MySQL требуется создать временную таблицу (например, при необходимости выполнить сортировку для операции ORDER BY). Однако в некоторых сценариях эта временная таблица будет создана на диске, а не в памяти. MySQL создает временную таблицу на диске, когда:

  • для запроса, использующего столбцы BLOB, требуется временная таблица.
  • размер временной таблицы больше, чем max_heap_table_size или tmp_table_size.

Если MySQL необходимо создать временную таблицу на диске, она создает таблицу MyISAM. Как вы понимаете, это может привести к значительному снижению производительности; особенно при работе в среде с низкой производительностью ввода-вывода.

В идеале следует по возможности избегать типов BLOB в запросах, но, поскольку это Drupal, мы можем не позволить себе роскошь переписать запрос, не прибегая к уродливым хакам, таким как переписывание SQL на лету. Таким образом, есть несколько вариантов, которые могут немного помочь.

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

Второй вариант — настроить MySQL для создания временных файлов на диске на RAM-диске. Это означает, что временная таблица MyISAM по существу создается в памяти. Этот метод может быть очень полезным, и если на сайте возникают проблемы с производительностью из-за временных таблиц на диске, реализация этого варианта может оказаться полезной. Обратите внимание, что многие хостинг-провайдеры, такие как Acquia, уже делают это.

Чтобы отслеживать, сколько временных таблиц создается на диске, следите за переменными состояния Created_tmp_disk_tables и Created_tmp_tables.

Оптимизация запросов

Больших преимуществ можно добиться, настроив отдельные проблемные SQL-запросы. Первым шагом в этом процессе является определение проблемных запросов. Журнал медленных запросов MySQL — отличный инструмент, помогающий в этом процессе. Настройте MySQL для регистрации всех запросов, которые не используют индексы и занимают больше 1 секунды, и пусть ваш сайт работает в течение дня или двух. Через день или два pt-query-digest можно использовать в журнале медленных запросов, чтобы легко выделить наиболее проблемные запросы.

Еще один способ выявления проблемных запросов – использование модуля devel. Этот модуль может показать вам все запросы, которые выполняются как часть загрузки страницы, а также время выполнения каждого отдельного запроса. Это может помочь вам определить, вызывает ли какой-либо проблемный SQL-запрос увеличение времени загрузки страницы.

После выявления проблемных запросов следующим шагом будет просмотр плана их выполнения в MySQL. Это достигается с помощью команды EXPLAIN в MySQL. Многие люди умнее меня написали целые книги по оптимизации запросов, поэтому я не буду здесь вдаваться в подробности.

В общем случае, предполагая, что вы не можете изменить SQL, сгенерированный Drupal, вы можете сделать следующее:

  • избегайте создания временных таблиц. Стратегии, позволяющие избежать этого, включают создание индекса, который удовлетворяет порядку сортировки запроса, т. е. включает все столбцы в предложении ORDER BY в правильном порядке
  • избегайте полного сканирования таблицы. В этом может помочь создание индекса предикатов в запросе в зависимости от избирательности предикатов в запросе.
  • использовать покрывающие индексы. Покрывающий индекс — это индекс, который никогда не требует поиска в таблице, но может полностью удовлетворить запрос из индекса. Это может дать большие преимущества в производительности.

Обратите внимание, что приведенные выше рекомендации являются очень общими. Если вы хотите узнать больше об оптимизации запросов, я рекомендую High Performance MySQL и дизайн индекса реляционной базы данных и оптимизаторы для более подробного освещения этой темы.

Конфигурация ввода/вывода InnoDB

То, что InnoDB делает при фиксации транзакции, контролируется innodb_flush_log_at_trx_commit. Для обеспечения совместимости с ACID для переменной innodb_flush_log_at_trx_commit должно быть установлено значение 1 (это также значение по умолчанию). Если установлено значение 1, InnoDB выполняет системный вызов fsync() при фиксации транзакции.

Некоторые сайты могут ослабить гарантии D (долговечность), предоставляемые InnoDB, чтобы ускорить запись. Мы не рекомендуем изменять этот параметр. Если записи становятся узким местом для вашего сайта и потеря некоторых данных не считается проблемой, то изменение этого параметра конфигурации может быть приемлемым вариантом. Однако, как правило, лучше оставить значение по умолчанию.

Системная переменная innodb_flush_method управляет тем, как InnoDB записывает данные на диск. Установка этого параметра в O_DIRECT означает, что кеш файловой системы будет пропущен, и InnoDB будет записывать непосредственно на диск. Это предотвращает двойную буферизацию. Изменение этой переменной значения по умолчанию не всегда гарантирует повышение производительности, поэтому, если вы планируете изменить этот параметр, стоит убедиться, что у вас есть тест производительности, который вы можете запустить, чтобы убедиться, что он положительно влияет на производительность вашего сайта.< /p>

Использовать Solr для поиска

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

Apache Solr — это испытанный и надежный поисковый сервер с открытым исходным кодом, который сегодня используется многими крупнейшими сайтами. Существует множество модулей для интеграции Solr с Drupal. Acquia также предлагает Solr в качестве услуги, упрощающей развертывание для существующих клиентов Acquia.

Обычно мы используем модуль Drupal, спонсируемый Acquia, поскольку большинство наших клиентов развернуты в сети Acquia Network. Другим вариантом является поисковый API и реализация этого API, использующая Solr.

Перенос поисковых запросов в Solr может значительно повысить эффективность поиска на сайте с интенсивным трафиком. в частности сайт с высоким поисковым трафиком.

Альтернативные полевые модули хранения

Проект mongodb для drupal предоставляет ряд точек интеграции для этой базы данных NoSQL. Я лично протестировал реализацию полевого хранилища с точки зрения производительности и заметил хорошие результаты. Для модуля хранения полей традиционная реализация SQL поддерживает отдельную таблицу для каждого поля. В модуле хранения полей MongoDB для каждого объекта поддерживается один документ, и этот документ содержит все поля для этого объекта.Таким образом, необходимость в объединениях при извлечении полей для сущности отпадает, а это также означает, что при добавлении новой сущности необходимо записать только одно место.

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

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

Хотя MongoDB выглядит многообещающе, для многих сайтов, развернутых в различных средах хостинга, это просто не вариант. К счастью, проект MongoDB — не единственный, предлагающий альтернативный модуль полевого хранения.

Существует альтернативный полевой модуль хранения, использующий базовую базу данных SQL. Этот модуль не хранит версии полей, поэтому, если это приемлемо для вашего сайта, этот модуль может значительно улучшить производительность. Опять же, результаты тестов с этим модулем воспроизведены ниже.

Вы можете видеть, что с этим модулем показатели, которых мы достигаем с MySQL, заметно улучшились. Подробнее о тестах с этим модулем читайте в моем личном блоге.

Дополнительные предложения

Кэш аутентификации

AuthCache – это интересная идея для повышения производительности сайтов, трафик которых состоит в основном из пользователей, прошедших проверку подлинности. Единственным существенным недостатком этого модуля является то, что могут потребоваться дополнительные усилия по разработке, чтобы увидеть основные возможные преимущества производительности. Это не простой модуль plug and play, но он кажется многообещающим решением, если вы готовы приложить усилия.

Пограничная сторона включает

Edge side include — это язык для включения фрагментов веб-страниц в другие веб-страницы. Модуль esi — это еще один модуль, который служит потребностям сайтов, стремящихся повысить производительность, когда трафик состоит в основном из аутентифицированных пользователей. Мы широко использовали ESI при создании нового приложения для MTA в Нью-Йорке. Более подробная информация о том, как мы использовали ESI для этого проекта, содержится в вебинаре, который мы провели на эту тему вместе с Acquia.

Модуль CDN для Drupal обеспечивает интеграцию сети доставки контента для вашего сайта Drupal. Можно использовать различные серверы CDN, например Amazon CloudFront или MaxCDN. Существуют статьи о настройке этого модуля с помощью Amazon CloudFront, и, учитывая низкую стоимость установки, модуль CDN может оказаться чрезвычайно полезным. Один из наших читателей нашего последнего поста также упомянул этот модуль в комментарии.

Йоттаа

Yottaa недавно выпустила новый интересный бета-плагин, который выглядит многообещающе. Этот плагин применяет технологию оптимизатора сайта Yottaa способом, характерным для сайтов Drupal, и может значительно повысить производительность. Дополнительным преимуществом для клиентов Acquia является то, что Yottaa уже предлагается в качестве надстройки в сети Acquia.

Заключение

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

Читайте также: