Первое, что рекомендуют при оптимизации любой БД в Unix системах, это включение опции noatime для раздела с данными БД.
При этом отключается запись информации о последнем обращении к файлам.
Эту опцию нужно прописать в файл /etc/fstab в качестве параметра монтирования ФС.
Для применения данного параметра без перезагрузки системы достаточно выполнить команду:
При этом отключается запись информации о последнем обращении к файлам.
Эту опцию нужно прописать в файл /etc/fstab в качестве параметра монтирования ФС.
Для применения данного параметра без перезагрузки системы достаточно выполнить команду:
mount -o remount <точка монтирования раздела>
mount -o remount,noatime /
Далее выполним оптимизацию таблиц mysql, это делается следующей командой:
mysqloptimize --analyze --all-databases -u root -p
Примечание: только для таблиц типа myisam. Для innodb не пройдет.
Примечание: только для таблиц типа myisam. Для innodb не пройдет.
Следующим шагом будет использование утилиты MySQLTuner. Она входит в основной репозиторий Debian, поэтому её установка весьма тривиальна:
apt-get install mysqltuner
sudo mysqltuner --forcemem 4960 --forceswap 1021
где forcemem - количество озу, forceswap - swap
sudo mysqltuner --forcemem 4960 --forceswap 1021
где forcemem - количество озу, forceswap - swap
Официальная документация рекомендует работу сервера хотя бы сутки, под типичной для него нагрузкой, перед использованием утилиты. А т.к. для достижения максимального эффекта нам придётся многократно запускать эту утилиту, то вместо суточного ожидания мы будем использовать короткое стресс-тестирование (подробное описание нагрузочного тестирования дано ниже).
При запуске утилиты будут запрошены логин и пароль администратора mysql, после чего будет выдан краткий анализ работы MySQL и набор параметров, которые рекомендуют добавить в конфигурацию сервера (/etc/mysql/my.cnf). После изменения параметров необходим перезапуск mysql:
service mysql restart
Наш алгоритм использования этой утилиты выглядит следующим образом:
Запускаем нагрузочное тестирования web-сервера (запоминаем результаты)
Запускаем mysqltuner.
Изменяем параметры mysql в соответствии с рекомендациями утилиты.
Перезапускаем mysql.
Возвращаемся к 1-му пункту. Цикл нужно повторять до тех пор пока не закончатся рекомендации mysqltuner (чуть подробее описано ниже).
Очень часто mysqltuner при каждой итерации рекомендует увеличение одного и того же параметра (каждый раз на большее значение), причём даже после нескольких изменений подряд улучшения работы сервера нет (смотрите результаты стресс-тестирования).
При этом нам известны два варианта: первый - параметр ещё не достиг значения при котором почувствуется эффект от его изменения (тут нужно просто набраться терпения и пройти ещё несколько итераций) и второй - эффект от данного параметра может и будет, но у нас просто не хватит на это ресурсов (т.е. если при очередной итерации Вам советуют выделить под какой-то параметр память сравнимую с общим объёмом в системе, а результата после этого всё равно нет, то нужно просто откатится на разумное значение этого параметра).
При этом нам известны два варианта: первый - параметр ещё не достиг значения при котором почувствуется эффект от его изменения (тут нужно просто набраться терпения и пройти ещё несколько итераций) и второй - эффект от данного параметра может и будет, но у нас просто не хватит на это ресурсов (т.е. если при очередной итерации Вам советуют выделить под какой-то параметр память сравнимую с общим объёмом в системе, а результата после этого всё равно нет, то нужно просто откатится на разумное значение этого параметра).
Комментариев нет:
Отправить комментарий