Вставлено позже: После всех исследований оказалось что эта проблема из за того что в новых системах таблицы создаются в InnoDB. Подробнее
Как узнать справляется ли ваш сервер с системой MD?
Можно посмотреть на загрузку процессора.
В linux вам поможет команда top.
В Windows "Диспетчер приложений". Но как оказалось это не очень важный параметр для MD. И даже если показывает загрузку 20%, система всё равно будет тормозить.
А что же тогда является показателем для MD?
MD очень сильно завязана на MySQL. Хоть и оптимизировали её в последний год с использованием кешевых таблиц в памяти, всё рано от журналов никуда не деться. Журналы - это дополнительные файлы, в которые пишется информация о изменении данных в таблице. Перед их изменением. Это нужно для того чтобы если были проблемы во время изменения таблиц, сервис MySQL смог откатить и восстановить данные ваших таблиц (Надёжность, так сказать). И пока журнал не будет записан на диск, таблица не обновляется. Ну а если данных много или диск сильно занят. А журналы имеют избыточную информацию, что приводит к сильному торможению системы при частом обновлении данных в таблицах.
Как измерить нагрузку системы?
Самое простое это посмотреть загрузку системы ввода вывода.
В Linux это можно увидеть через туже команду top. В верху будут параметры "load average". В идеале они не должны превышать N (Количество ядер). Более подробно читать здесь. Также вам очень поможет утилита iotop -a -o. Она точно покажет кто виноват. И если в верху вы увидите что процесс jdb2 занимает большой процент работы (>40%) значит эта статья точно про ваш комп
В Windows можно перейти на "Производительность" или "Монитор ресурсов" (Зависит от версии Win) и посмотреть на сколько у вас загружен винчестер. Точно сказать процесс не могу, всё проверял на debian
Как с этим бороться?
Можно настроить MySQL так чтобы он не делал эти журналы или делал но в памяти, а потом сбрасывал его на диск через какое то время. Это значительно ускорит вашу систему. НО при аварии, вы потеряете эти данные. Потому рекомендую включать эту опцию, только для тех компьютеров у которые есть UPS
Вот что вам нужно добавить в конец /etc/mysql/my.cnf
Код: Выделить всё
[mysqld]
innodb_flush_log_at_trx_commit=2
Какой прирост получился?
У меня стоит не совсем обычная система. А сервер виртуализации ProxMox (О нём я напишу в другом посте. Если интересно). на нём крутится 10 виртуальных машин (они не виртуальные а контейнеры), 6 сайтов, 1 - MajorDomo, 1 - Samba, 1 - Nginx для форвардинга, 1 - Zabbix сервер. И всё это на обычном NetBook c Atom процессором (Почему так: Малое потребление, встроенный UPS)
До оптимизации MySQL average показывал до 4 единиц. Что является просто катастрофичным для системы.
После оптимизации я получил коэффициент 0,9 единиц. Что является удовлетворительным для работы (Но тоже не супер. Задумался о новом железе)
Итог: MajorDomo нуждается в тонкой настройке MySQL, что является не тривиальным для обычного пользователя