Назад | Перейти на главную страницу

Оптимальная настройка MySQL my.cnf для большого сайта Magento на выделенном сервере

На нашем выделенном сервере работает большой магазин Magento с базой данных MySQL размером примерно 250 МБ.

В спецификации сервера указано 5 процессоров Xeon 2 ГГц (кэш 4 МБ) и 12 ГБ памяти.

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

Текущий файл MySQL my.cnf выглядит следующим образом:

skip-innodb

ft_min_word_len=3    
query_cache_limit = 4M    
query_cache_size = 16M ## 32MB for every 1GB of RAM    
query_cache_type = 1    
max_user_connections = 50    
max_connections = 50    
interactive_timeout = 300    
wait_timeout = 200    
connect_timeout = 200    
thread_cache_size = 32    
key_buffer_size = 64M ## 128MB for every 1GB of RAM    
join_buffer_size = 1M    
max_connect_errors = 20    
max_allowed_packet = 12M    
table_cache = 1024    
record_buffer = 1M    
sort_buffer_size = 1M ## 1MB for every 1GB of RAM    
read_buffer_size = 1M ## 1MB for every 1GB of RAM    
read_rnd_buffer_size = 1M ## 1MB for every 1GB of RAM    
thread_concurrency = 4 ## Number of CPUs x 2    
myisam_sort_buffer_size = 32M    
tmp_table_size = 16M    
max_heap_table_size = 12M

[safe_mysqld]    
open_files_limit = 2048

[mysqldump]    
quick    
max_allowed_packet = 12M

Я видел предлагаемый my.cnf для выделенного сервера БД Magento (2 ГБ оперативной памяти):

query_cache_size = 512 МБ

query_cache_limit = 256 МБ

tmp_table_size = 256 МБ

key_buffer_size = 64 МБ

read_buffer_size = 128 МБ

read_rnd_buffer_size = 128 МБ

bulk_insert_buffer_size = 64 МБ

myisam_sort_buffer_size = 128 МБ

myisam_max_sort_file_size = 128 МБ

myisam_max_extra_sort_file_size = 128 МБ

myisam_repair_threads = 2

myisam_recover

innodb_additional_mem_pool_size = 256 МБ

innodb_log_buffer_size = 128 МБ

innodb_log_file_size = 128 МБ

innodb_log_files_in_group = 2

innodb_flush_log_at_trx_commit = 0

innodb_buffer_pool_size = 512 МБ

innodb_data_home_dir = / вар / библиотека / mysql /

innodb_data_file_path = ibdata1: 256M: автоматическое расширение

innodb_autoextend_increment = 32

Мне было интересно, сможет ли кто-нибудь предложить лучшие значения для параметра my.cnf с учетом нашей спецификации?

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

Любые мысли были бы очень признательны. Ура.

MySQL обычно последний узкое место в магазине Magento, когда вы тестируете производительность для отдельного пользователя. Тем не менее, ваш my.cnf не выглядит оптимальным ни для магазина Magento, ни для этой спецификации сервера. Я написал подробный ответ о загрузке MySQL для Magento здесь,

https://serverfault.com/a/367856/113375

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

Из http://docs.sonassihosting.com/go_dedicated.pdf

В зависимости от архитектуры вашего процессора и скорости шины - используя приведенные ниже рисунки, НАИЛУЧШЕЕ, которого вы можете достичь, - это время рендеринга PHP-страницы 0,8 с (исключая images / js / css).

Дает вам общее представление о том, какое оборудование выбрать

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

Возможны:

  1. Медленное время загрузки страницы и низкая поддержка параллелизма (низкая тактовая частота процессора (ГГц), мало ядер)
  2. Быстрое время загрузки страницы, но низкая поддержка параллелизма (высокая тактовая частота процессора (ГГц), несколько ядер)
  3. Медленное время загрузки страницы, но высокая поддержка параллелизма (низкая тактовая частота процессора (ГГц), много ядер)
  4. Быстрое время загрузки страницы и высокая поддержка параллелизма (высокая тактовая частота ЦП (ГГц), много ядер)

Исходя из этого, вы можете выбрать свое оборудование.

Параллелизм

а) Стандартный демонстрационный магазин Magento способен доставлять примерно 230 уникальных посетителей на ГГц в час.

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

c) Магазин с плохо построенным / тяжелым шаблоном может дополнительно снизить показатель еще на 100-200%, до 50 уникальных посещений на ГГц в час.

Когда мы приводим цифры, мы используем вариант б).

Время загрузки отдельной страницы

Стандартный демонстрационный магазин Magento (CE или EE - когда FPC отключен) может загружать домашнюю страницу в:

0.7 seconds  2.4GHz  CPU
0.6 seconds  2.8GHz  CPU
0.51 seconds 3.3GHz  CPU
0.48 seconds 3.46GHz CPU

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

Выше источник извлечен из http://docs.sonassihosting.com/go_dedicated.pdf

Я бы предположил, что, поскольку у вас 5 процессоров - вы используете VPS (облачный или другой), в таком случае ввод-вывод, вероятно, будет вашим узким местом как для диска, так и для сети. К сожалению, из-за состязательной природы VPS - они никогда не бывают идеальными для хостинга Magento - если только человек / компания, управляющая им, не имеет очень глубоких знаний об оптимизации Magento, а оборудование не является предметом споров.

Из http://www.webhostchat.co.uk/dedicated-servers-vps-colocation/27555-magento-hosting-please-advise-what-i-may-need-2-sites-1-magento-install.html

Минусы VPS для Magento

У каждого пользователя есть root-доступ. Это означает, что другие узлы VPS в вашей системе могут запускать bonnie / iperf / hping и впоследствии забивать ресурсы, которые нельзя разделить / разделить - ввод-вывод жесткого диска, сеть или прерывания. Так что даже если у вас есть гарантированный CPU / RAM - вы подчиняетесь общей подсистеме.

У вас ограниченный процессор и оперативная память. Да, вы можете увеличивать / уменьшать масштаб, но, в конце концов, небольшое хранилище Magento извлекает выгоду из минимум 2 ГБ ОЗУ, выделенных только для экземпляра MySQL, в сочетании с практическим правилом 1 ГБ ОЗУ / логическое ядро ​​ЦП. Таким образом, VPS должен иметь как минимум 3 ГБ ОЗУ и 1 ядро ​​ЦП, что при большинство (при правильной настройке) будет способен обслуживать около 1500 уникальных посетителей в день для магазина Magento, совершающего транзакции, - при условии отсутствия узких мест ввода-вывода жесткого диска или сетевого ввода-вывода.

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

Выше источник извлечен из http://www.webhostchat.co.uk/dedicated-servers-vps-colocation/27555-magento-hosting-please-advise-what-i-may-need-2-sites-1-magento-install.html

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

  1. Каков уровень ежедневных уникальных посетителей?
  2. Количество просмотров страницы на посетителя?
  3. Из какой страны будут преимущественно приезжать?
  4. Ожидаете ли вы роста посещаемости сайта в течение следующих 12 месяцев, если да, то насколько?
  5. Есть ли на вашем сайте возможность скачивания в цифровом виде?
  6. Количество просмотров магазина?
  7. Количество товаров в каталоге?
  8. Количество категорий в каталоге?
  9. Количество атрибутов в каталоге?
  10. Количество наборов атрибутов в каталоге?
  11. Текущее использование дискового пространства?
  12. Текущее использование полосы пропускания?
  13. Транзакций в день?

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

Взгляните на них на мгновение:

max_user_connections = 50    
max_connections = 50

Apache по умолчанию запускает 500 подключений. На данный момент, если 50 запросов пойдут в MySQL / MySqlI, то больше будет отклонено.