Уменьшение потребления памяти 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.