Подтвердить что ты не робот

Сокращение потребления памяти mysql на ubuntu @aws micro instance

Недавно я начал работу над проектом PoC, в котором мы разрабатываем небольшое веб-приложение. Первоначальная настройка выполняется на микро-экземпляре из AWS. Мы находимся в rails + mysql stack.

После установки/запуска MySQL я вижу, что уже потребляется около 500 МБ ОЗУ; оставив для системы меньше всего (микроуровне имеют только 620 МБ ОЗУ).

Наше приложение довольно просто на этом этапе. Могу ли я что-то сделать для уменьшения объема памяти, потребляемой сервером MySQL?

Оцените справку.

4b9b3361

Ответ 1

Измените этот параметр в файле конфигурации 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

Ответ 2

В файле 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. Иными словами, ваши изменения my.cnf должны выглядеть так:

performance_schema = 0
show_compatibility_56 = 1

Ответ 3

Просто добавьте к другому ответу. Недавно у меня была эта проблема с микро-экземпляром Amazon (а не Ubuntu). Файл my.cnf почти пуст, поэтому я сделал следующее:

cp /etc/my.cnf /etc/my.cnf.orig
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

Измените my.cnf и включите строки innodb, если это применимо. Перезапустите mysqld.

Также микро-экземпляр не имеет свопа, это может быть проблемой.

SWAPFILE=/mnt/swapfile.swap
dd if=/dev/zero of=$SWAPFILE bs=1M count=512
mkswap $SWAPFILE
swapon $SWAPFILE

Затем в /etc/rc.local добавьте:

swapon/mnt/swapfile.swap

Чтобы сохранить память в рубине, вы можете использовать рубиновое предприятие:

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

Ответ 4

У меня есть сервер с объемом памяти 500 Мбайт и обнаружил, что mysql начал использовать много баранов, так как мои таблицы стали больше. После игры с кучей настроек, что уменьшило использование памяти для меня, было преобразование всех моих таблиц в MyISAM. Если вам не нужны функции конвертирования таблиц innodb в MyISAM, это очень помогает. Вы можете конвертировать таблицы следующим образом:

ALTER TABLE test.mytable ENGINE=MyISAM;

После этого изменения я обнаружил, что использование памяти уменьшилось на 20%. Чтобы получить дальнейшее сокращение использования памяти, вы можете конвертировать ВСЕ ваши таблицы в MyISAM, а затем полностью отключить поддержку innodb в mysql. Это уменьшило использование памяти на 50%.

Вы можете сделать это, добавив:

[mysqld]
default_storage_engine=myisam
innodb=OFF

а затем перезапустите mysql.