Что вы используете в качестве сервера MySQL для Magento?
- MySQL (Oracle)
- Percona
- другие (MariaDB)
Percona предоставляет набор улучшений для хранилища InnoDB, интенсивно используемых Magento, но эти улучшения действительно имеют значение при запуске магазина Magento.
Как улучшить производительность (общие подходы к архитектуре, а не конкретная информация о настройке конкретных переменных, например innodb_flush_log_at_trx_commit=2
и т. Д.). Я знаю, что NBS попробовал репликацию мастер-мастер, но это не стабильно.
Я действительно столкнулся с некоторыми проблемами при репликации «ведущий-ведомый» с чтениями, перенаправленными на ведомое устройство, потому что имелись некоторые задержки в репликации данных.
Выходите из MySQL как можно больше? (поиск, чтобы решить и так далее).
performance
mysql
FlorinelChis
источник
источник
Ответы:
Здесь вы попадаете в широкий, широкий мир оптимизации, и, конечно, не существует единого подхода, подходящего для всех.
Определить производительность
Вы имеете в виду время загрузки страницы для одного пользователя или общую емкость / общий параллелизм? Эти два совершенно разные - и не строго связаны. Вполне возможно иметь быстрый магазин с ограниченной емкостью; или медленный магазин с большой емкостью.
Поэтому при рассмотрении любого типа производительности:
Вы должны справиться с каждым независимо со своими собственными решениями - тем более что у каждого есть свои узкие места.
Давайте предположим, что вы работаете с компетентным хостом, который уже настроил другие аспекты вашего сервера оптимально для вашего магазина.
Время загрузки страницы воспринимается одним пользователем
Является ли MySQL узким местом
Нет. Не напрямую. Все дело в задержке, в большинстве случаев при тестировании времени загрузки страницы - только кеши будут поражены. Таким образом, ключ здесь заключается в том, чтобы минимизировать задержки.
Но эти изменения будут иметь такое незначительное влияние на время загрузки страницы, где узкое место действительно в другом месте.
Приложение является узким местом. Не программное обеспечение. Так что простое улучшение кода ядра или уменьшение веса вашего шаблона окажет гораздо более существенное влияние на производительность, чем ЛЮБОЕ изменение конфигурации MySQL.
Что бы нас не беспокоило
s1 Только для отдельных серверов баз данных. Не относится к локальным серверам БД.
Общая емкость / параллелизм
Может быть, MySQL является узким местом ? Но только после того, как вы снизили производительность и мощность PHP до такой степени, что MySQL замедляет работу. Если у вас правильно сконфигурированы Varnish и FPC (не заставляйте нас начинать с того, сколько неудачных попыток мы уже видели), - тогда MySQL становится узким местом.
Так что в дополнение к вышеуказанным модификациям.
Что бы нас не беспокоило
Масштабирование чтения и записи
Последний абзац действительно ведет к ключевой области масштабируемости чтения и записи. Масштабирование чтения может выполняться довольно бесконечно без особых сложностей с добавлением все большего количества рабов.
Учитывая, что соотношение чтений к письмам у Magento составляет около 0,1%, учитывая, что записи не должны вызывать беспокойства. Вот почему я не потрудился упомянуть MySQL Cluster и его умные функции, такие как автоматическое разделение (разделение таблиц на отдельные машины).
Аппаратное, аппаратное, аппаратное обеспечение
Аппаратное обеспечение - это самый быстрый ответ, когда дело доходит до улучшения, поэтому я сознательно не упомянул об этом выше в обоих сценариях.
Но все изменения программного обеспечения в мире не будут иметь никакого значения, если базового оборудования недостаточно. Это может означать ...
В настоящее время существует очень высокий потолок того, насколько высоко вы можете масштабировать оборудование. Давайте проигнорируем миф о бесконечном масштабировании «в облаке», поскольку облачное оборудование имеет тенденцию быть довольно посредственным. Например, у флагманских моделей Amazon всего 12 ядер при 3,3 ГГц. Но помимо этого есть несколько очень мощных серверов - наш топ-сервер имеет 160 ядер и 2 ТБ (да, терабайта) оперативной памяти. Мы еще не видели, чтобы кто-то превосходил возможности этого.
Таким образом, у вас есть широкие возможности для вертикального масштабирования, прежде чем вам даже нужно будет рассмотреть горизонтальное масштабирование.
Вечно движущаяся цель
Стоит отметить, что в погоне за производительностью узкое место всегда будет двигаться.
Для стокового магазина Magento.
Включите тайники. Узким местом является PHP.
Добавьте кеш сервера. Узким местом является PHP.
Добавьте кеш страницы на уровне приложения. Узким местом является PHP.
Добавьте кеш на уровне сервера (например, Varnish). Узкое место в MySQL
Добавьте альтернативный поисковый / многоуровневый механизм навигации (например, SOLR / Sphinx). Узким местом является PHP.
Добавьте больше серверов приложений. Узкое место
- MySQL. Добавьте подчиненный MySQL. Внешнее кэширование является узким местом.
Добавьте больше серверов внешнего кэширования. Узким местом является PHP.
Добавьте больше серверов приложений. SOLR / Sphinx является узким местом
Etcetera.
Это в значительной степени превращается в случай повторного полоскания. Но ясно, что MySQL определенно не является первым портом вызова для оптимизации - и действительно вступает в игру только тогда, когда MySQL потребляет больше ресурсов процессора пропорционально PHP - и это ТОЛЬКО когда-либо происходит, когда используются FPC и Varnish. и сервер (ы) просто обрабатывают заказы и ничего больше (потому что все остальное находится в кеше).
Не вносите изменения вслепую
Простое добавление ведомого MySQL, потому что вы читаете выше, говорят, что это поможет, может стоить вам производительности и надежности на огромном уровне. Переполненная сеть, подчиненный сервер с низкой спецификацией или даже неправильные настройки могут вызвать проблемы с репликацией, которые могут сделать ваш магазин медленнее, чем это было с самого начала, или вызвать проблемы синхронизации между ведущим и ведомым.
Чтобы положить вещи в перспективе - некоторые примеры из реального мира.
Пример 1 - 300 заказов в час
Мы использовали следующее оборудование для обслуживания 300 заказов в час ; и только в этот переломный момент - тогда мы почувствовали необходимость добавить выделенный сервер MySQL и локальный подчиненный MySQL.
1 Сервер
ЦП: 2x Intel E5-4620
ОЗУ: 64 ГБ HDD: 4x 80k IOP / s SSDs
RAID: Аппаратный RAID 10
Magento Версия: Magento EE
ОС: MageStack
В течение всего времени средние нагрузки оставались ниже 3,00.
Пример 2 - 180 заказов в час
Всего два дня назад наш новый клиент легко впитал большой всплеск трафика. Обработка 180 заказов в час с одним сервером и Magento Community Edition .
1 Сервер
ЦП: 2x Intel E5-4620
ОЗУ: 64 ГБ HDD: 4x 80k IOP / s SSDs
RAID: Аппаратный RAID 10
Magento Версия: Magento CE
ОС: MageStack
Веб-сайт: Wellgosh.com
В течение всего времени средние нагрузки оставались ниже 6,00. В этом сценарии нагрузка была выше, и это было связано с несколькими факторами.
И учитывая недавнюю ситуацию, у нас все еще есть подробная статистика, чтобы дать некоторую обратную связь с помощью графиков. Они отлично рассказывают о том, как распределяется нагрузка между ключевыми компонентами отдельной архитектуры Magento (балансировщик нагрузки, веб-сервер, сервер БД и т. Д. - с использованием MageStack ).
Итак, спереди назад ... дата, на которую вы хотите посмотреть, - в 12:00 22 февраля.
Пакеты межсетевого экрана
Лак Трафик
Nginx Traffic
MySQL Load
Загрузка процессора
И самое главное, распределение нагрузки
Это изображение действительно говорит обо всем. И это то, что MySQL, конечно, не является бременем - по крайней мере, пока. Так что наш совет, сфокусируйте свои проблемы с производительностью в другом месте, если только вы не обрабатываете более нескольких тысяч заказов в час.
И в заключение
Внесение изменений в производительность не "один размер подходит всем". Это случай анализа ваших текущих узких мест и тонких изменений / корректировок в соответствии с вашим магазином и инфраструктурой.
Но помимо производительности, есть и другие преимущества использования Percona.
Мы используем Percona XtraDB, почти исключительно. Мы запускаем специально скомпилированные сборки MySQL, которые мы разработали специально для Magento и консультировались с Percona в ходе этого процесса. Но не только производительность повлияла на этот выбор.
И многое другое. Таким образом, использование его над MySQL имело и другие преимущества, помимо производительности. Фактически, MySQL является и всегда был наименьшим из наших беспокойств в стремлении к производительности и стабильности.
Атрибуты: wellgosh.com , sonassi.com , iebmedia.com .
источник