Страница 1 из 1

[Настройка] Ускорение MD на слабых компьютерах (MYSQL)

Добавлено: Чт июл 06, 2017 10:22 am
Ivan
Если у вас в качестве процессора на сервере используется ATOM или что то подобное то эта тема для вас.
Вставлено позже: После всех исследований оказалось что эта проблема из за того что в новых системах таблицы создаются в 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
После нужно перегрузить MySQL и MajorDomo. Ну или компьютер

Какой прирост получился?
У меня стоит не совсем обычная система. А сервер виртуализации ProxMox (О нём я напишу в другом посте. Если интересно). на нём крутится 10 виртуальных машин (они не виртуальные а контейнеры), 6 сайтов, 1 - MajorDomo, 1 - Samba, 1 - Nginx для форвардинга, 1 - Zabbix сервер. И всё это на обычном NetBook c Atom процессором (Почему так: Малое потребление, встроенный UPS)
До оптимизации MySQL average показывал до 4 единиц. Что является просто катастрофичным для системы.
После оптимизации я получил коэффициент 0,9 единиц. Что является удовлетворительным для работы (Но тоже не супер. Задумался о новом железе)

Итог: MajorDomo нуждается в тонкой настройке MySQL, что является не тривиальным для обычного пользователя

Re: Ускорение MD на слабых компьютерах (MYSQL)

Добавлено: Чт июл 06, 2017 11:06 am
skysilver
Ivan писал(а):До оптимизации MySQL average показывал до 4 единиц.
Где такое смотрят?
Ivan писал(а):Вот что вам нужно добавить в конец /etc/mysql/my.cnf
innodb_flush_log_at_trx_commit=2
А оно вообще влияет на БД MJD? В ней же все таблицы MyISAM.

Re: Ускорение MD на слабых компьютерах (MYSQL)

Добавлено: Чт июл 06, 2017 11:11 am
itank
skysilver писал(а):
Ivan писал(а):До оптимизации MySQL average показывал до 4 единиц.
Где такое смотрят?
утилита top
правый верхний угол
load average: 6,78, 4,19, 3,42
нагрузка читается как среднее за 1, 5 и 15 минут соответственно

или в утилите uptime
# uptime
11:10:01 up 22 days, 21:00, 1 user, load average: 6,54, 5,27, 4,00

Re: Ускорение MD на слабых компьютерах (MYSQL)

Добавлено: Чт июл 06, 2017 11:23 am
skysilver
itank писал(а):утилита top
правый верхний угол
load average: 6,78, 4,19, 3,42
А, понятно. Я думал, есть какая-то утилита именно по загрузке MySQL.

Re: Ускорение MD на слабых компьютерах (MYSQL)

Добавлено: Чт июл 06, 2017 12:24 pm
Ivan
skysilver писал(а):
Ivan писал(а):Вот что вам нужно добавить в конец /etc/mysql/my.cnf
innodb_flush_log_at_trx_commit=2
А оно вообще влияет на БД MJD? В ней же все таблицы MyISAM.
Вот как раз сейчас разбираюсь. Я ставил систему 4 года назад, и до сих пор накатывал просто обновления. Похоже уже давно всё поменялось.

Re: Ускорение MD на слабых компьютерах (MYSQL)

Добавлено: Чт июл 06, 2017 4:03 pm
tarasfrompir
В помощь к описанию - АФФтору респект
СпойлерПоказать
Три варианта значений

innodb_flush_log_at_trx_commit = 1

Значение "1" означает, что любая завершенная транзакция будет синхронно сбрасывать лог на диск. Это вариант по-умолчанию, он является самым надежным с точки зрения сохранности данных, но самым медленным по скорости работы.

innodb_flush_log_at_trx_commit = 2

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

innodb_flush_log_at_trx_commit = 0

Значение "0" даст наибольшую производительность. В этом случае буфер будет сбрасываться в лог файл независимо от транзакций. В этом случае риск потери данных возрастает.
А почитать вообще интересно здесь https://ruhighload.com/post/my.cnf

Re: Ускорение MD на слабых компьютерах (MYSQL)

Добавлено: Пт июл 07, 2017 4:35 pm
Ivan
Ну и в заключении.
Проблема оказалась в том что я ставил систему на ubuntu с использованием последних версий MySQL. А в них по умолчанию таблицы создаются с типом таблиц InnoDb. А MajorDomo предполагает по умолчанию MyISAM

Хоть MyISAM - и устаревшая модель но она гораздо быстрее InnoDb. MajorDomo не использует фишки InnoDb

В итоге было решено переключить все таблицы с InnoDb на MyISAM (Статус бета тестера не позволяет отходить за рамки установленных стандартов)

Как переключить:
В консоли либо в phpMyAdmin

Код: Выделить всё

SELECT CONCAT('ALTER TABLE ', table_name, ' ENGINE=MyISAM;') as ExecuteTheseSQLCommands
FROM information_schema.tables WHERE table_schema = 'db_terminal'
AND ENGINE = 'InnoDB' 
ORDER BY table_name DESC; 
Ну и чтобы будущие таблицы были MyISAM в /etc/mysql/my.cnf

Код: Выделить всё

[mysqld]
innodb_flush_log_at_trx_commit=2
default-storage-engine=myisam
Но я всё же рекомендую остаться на InnoDB

Re: [Настройка] Ускорение MD на слабых компьютерах (MYSQL)

Добавлено: Вс дек 08, 2019 12:55 am
Кулибин
Не работает в консоли. Ошибку выдаёт. Вообще беда тормозит msql дико не понятно делать что , рыл интеренет дня 3.
Не уже ли нет ничего лучшего чем эта дрянь.