Уменьшение потребления памяти mysql на экземпляре ubuntu@aws micro
недавно я начал проект PoC, в котором мы разрабатываем небольшое веб-приложение. Первоначальная настройка выполняется на микро-экземпляре AWS. Мы находимся на rails + MySQL stack.
после установки / запуска MySQL я вижу, что около 500+ MB RAM уже потребляется; оставляя совсем меньше для остальных систем (микро-экземпляры имеют едва 620 MB RAM).
наше приложение довольно просто на данном этапе. Могу ли я сделать что-то, чтобы уменьшить память, потребляемую MySQL сервер?
спасибо за помощь.
4 ответов
измените этот параметр в файле конфигурации MySQL (my.cnf)
key_buffer = 8M
max_connections = 30 # Limit connections
query_cache_size = 8M # try 4m if not enough
query_cache_limit = 512K
thread_stack = 128K
в вашем my.cnf файл:
performance_schema = 0
и перезапустите mysql. Это должно резко сократить использование памяти, если вы ранее были на нем.
2016 Edit: от MySQL 5.7.8 и далее, выше не достаточно, чтобы освободить вашу память данных схемы производительности:
начиная с MySQL 5.7.8, даже когда схема производительности отключена, она продолжает заполнять global_variables, session_variables, global_status и session_status таблицы.
(источник)
чтобы предотвратить это поведение, установите show_compatibility_56
к 1 в дополнение к performance_schema
. То есть, ваше мое.изменения cnf должны выглядеть так:
performance_schema = 0
show_compatibility_56 = 1
просто добавить к другому ответу. Недавно у меня была эта проблема с экземпляром Amazon micro (не Ubuntu). Моя.файл cnf почти пуст, поэтому я сделал следующее:
cp /etc/my.cnf /etc/my.cnf.orig
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
редактировать мои.cnf и включите строки innodb, если это применимо. Перезапустить mysqld.
также экземпляр micro не имеет подкачки, что может быть проблемой..
SWAPFILE=/mnt/swapfile.swap
dd if=/dev/zero of=$SWAPFILE bs=1M count=512
mkswap $SWAPFILE
swapon $SWAPFILE
затем в /etc / rc.местное добавление:
вызове swapon /MNT в/подкачки.swap
для сохранения памяти в Ruby вы возможно, вы захотите использовать ruby enterprise:
bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
gpasswd -a root rvm
source /etc/profile.d/rvm.sh
rvm get head
rvm reload
rvm install ree
rvm --default use ree
у меня есть сервер только с 500 МБ ОЗУ и обнаружил, что mysql начал использовать много ОЗУ, поскольку мои таблицы стали больше. После игры с кучей настроек, что уменьшило использование памяти для меня, было конвертировать все мои таблицы в MyISAM. Если вам не нужны функции innodb преобразование таблиц в MyISAM помогает совсем немного. Вы можете конвертировать таблицы следующим образом:
ALTER TABLE test.mytable ENGINE=MyISAM;
после этого изменения я обнаружил, что использование памяти уменьшилось на 20%. Чтобы получить дальнейшее сокращение использования памяти вы можете преобразуйте все свои таблицы в MyISAM, а затем отключите поддержку innodb в mysql вообще. Это уменьшило моей памяти на 50%.
Вы можете сделать это, добавив :
[mysqld]
default_storage_engine=myisam
innodb=OFF
и затем перезапуск mysql.