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

Безопасно ли использовать всю память на сервере linux, не оставляя ничего для кеша?

У меня есть сервер CentOS, полностью посвященный MySQL 5.5 (в основном с таблицами innodb). На сервере 32 ГБ ОЗУ, SSD-диски, а среднее использование памяти выглядит так:

Таким образом, около 25 ГБ используется и около 6,5 ГБ кэшируется. У меня проблемы с производительностью при запросах WRITE, поэтому я подумал, это оптимальный размер кеша? Я могу увеличить размер буфера innodb, чтобы кеш Linux стал меньше, или уменьшить его, чтобы он стал больше.

Каков оптимальный баланс используемой / кэшированной памяти для загруженного сервера MySQL в Linux?

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

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

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

Чтобы ответить прямо на заголовок вашего вопроса: Нет, это было бы очень плохой идеей.

Если вы назначаете всю свободную память, +/- несколько МБ, исключительно программе, любая другая программа, которая будет использовать часть вашей системной памяти (например, если вы время от времени используете find или cronjobs, выполняемые ежедневно, еженедельно и т. на) придется поменять местами.

Если ваша система будет менять местами, вы заметите огромное снижение общей производительности.