Mysql ficando sem memória

2

Estou tendo muitos problemas com o mysql comendo muita memória RAM em uma pequena máquina e estou procurando por alguma ajuda para descobrir por que ela está comendo muito.

Eu tenho uma pequena máquina virtual com 256MB de RAM rodando Debian Wheezy. Neste servidor eu tenho o apache2 e o mysql instalados. Eu não faço muito neste servidor, apenas alguns sites levemente usados e um servidor de e-mail.

Por algum motivo, várias vezes ao dia, meu servidor mysql falha. Quando eu verifico meu syslog, encontro o seguinte erro:

kernel: [3323593.630722] Out of memory in UB: OOM killed process 9471 (mysqld) score 0 vm:327824kB, rss:37080kB, swap:0kB

Então, até onde eu sei, o mysql começa a consumir muita memória e é morto pelo sistema. Eu faço log de consultas lentas e mantenho uma aba no meu log mysql.err, mas eu não vejo nada de muito valor naquelas que me mostrariam porque o mysql começa a comer tanta memória.

Meu arquivo my.cnf tem estas opções definidas:

key_buffer              = 8M
max_allowed_packet      = 16M
thread_stack            = 128K
thread_cache_size       = 8

query_cache_limit       = 512K
query_cache_size        = 8M

A outra coisa é que quando eu checo a quantidade de memória que está sendo usada quando eu inicio o mysql e mesmo durante o dia enquanto ele está rodando, eu normalmente tenho 128 MB livres. Eu não vejo como o mysql acabaria comendo essa quantidade.

O que posso fazer para rastrear este problema?

    
por shiznatix 29.01.2014 / 11:28

1 resposta

1

256 MB para o Apache e o MySQL é extremamente baixo. Eu sempre recomendo pelo menos 512MB para essa combinação (e isso é o mínimo). O que você está dizendo, no entanto, não é necessariamente o MySQL causando o problema, é apenas o killer OOM matando o MySQL porque a VM ficou sem memória. Além disso, o MySQL tem muitos padrões, portanto, mesmo que você não os tenha configurado no my.cnf, o innodb_buffer_pool_size terá 8MB e assim por diante.

    
por 29.01.2014 / 11:32