Калькулятор для настройки MySQL-сервера (my.cnf) и немного рекомендаций

Всем доброго времени суток.

Сегодня кратенькая заметка в блоговую часть сайта (все ведь знают, что она у нас есть, да? ;)) по серверной части, а то затюкали, что после второй книги я обленился и ничего не пишу по этому поводу. Исправляюсь.

mysql

В качестве продолжения начатого цикла, собственно, я хочу кратенько рассказать о том, как (хотя бы сильно приблизительно) настроить MySQL и понять сколько памяти он будет кушать на Вашем сервере (в зависимости от ряда параметров конфига), а так же как понимать, что и когда стоит менять.

Давайте приступим.


MySQL-калькулятор для конфигов памяти и MySQL-tuner для настройки сервера

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

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

wget https://raw.github.com/major/MySQLTuner-perl/master/mysqltuner.pl

Скрипт загружен. Запускаем (для работы требуется наличие Perl на сервере):

perl mysqltuner.pl

В результате конфиг вывалит огромный список:

Настройка и калькуляция памяти Mysql - скриншот 1

С описанием всего и вся, в частности, рекомендаций по конфигу:

Настройка

Рекомендации стоит иметь ввиду, но не считать истинной последней инстанции. В частности, хорошо бы обращать внимание на восклицательные знаки и прочую диагностическую информацию, которую Важно знать (и корректировать на основе неё настройки сервера):

Настройка и калькуляция памяти Mysql - скриншот 3

В числе прочего Вы можете увидеть строки вида:
[--] Physical Memory : 36.5G
[--] Max MySQL memory : 10.1G
[--] Other process memory: 7.2G

Расчет значения максимального потребления этой самой памяти идет как раз таки, в числе прочего, на основе параметров, которые у Вас указаны в my.cnf (местоположение зависит от операционной системы сервера и версии пакета mysql). Как Вы понимаете, разумно сделать так, чтобы MySQL не вылезал за пределы физической памяти в пиковой нагрузке, да еще и оставлял место для других процессов.

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

Настройка и калькуляция памяти Mysql - скриншот 4

Найти калькулятор можно по этой ссылке, ну, а использовать его решительно несложно - достаточно вбить свои значения и изменять их, в результате чего внизу Вы увидите то самое "Max MySQL memory". Это удобно в тех случаях, когда вышеуказанный тюнер Вам даёт рекомендации, Вы их вводите (не прочитав предупреждение) и получаете на выходе возможное потребление памяти (в пике) в 10 раз превышающее физическую память, что, в конце концов, выйдет Вам боком в самый неподходящий момент.

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

Что ж, к послесловию.

Послесловие

Вот такие два инструмента, которые, при наличии рук и головы, пригодятся многим (особенно на определенных отрезках возни с серверами, как локально, так и удалённо).

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

Sonikelf's Project's логотип Sonikelf's Project's логотип Космодамианская наб., 32-34 Россия, Москва (916) 174-8226
Михаил

А есть подобные утилиты но только для Firebird ? Я понимаю что им уже мало кто пользуется но всё таки.

Денис

Не работает калькулятор
TypeError: $ is not a function