InnoDB: Não é possível alocar memória para o buffer pool

1

Desde algumas semanas que adicionei um site wordpress ao meu servidor (lâmpada), que roda um pouco mais, o site mysql fica travando de vez em quando. O log do mysql contém:

InnoDB: Cannot allocate memory for the buffer pool

O que indica que não tenho memória suficiente.

O servidor tem 1gb de ram e, se estiver certo, ele contém 2gb de swap:

o innodb_buffer_pool_size = 128.0M

O tráfego no servidor é baixo, cerca de 150 visitantes por dia combinados para os sites.

Eu sei que poderia diminuir o inno_db_buffer_size, mas isso não resolve o uso de memória alta.

Estou suspeitando que o wordpress seja a causa desde que começou depois de adicionar o site wordpress. Como posso detectar a causa do erro para evitar que o mysql falhe.

    
por Sven van den Boogaart 12.12.2016 / 14:50

1 resposta

1

Repita depois de mim:

O MySQL não está falhando.

Esta é uma condição comum, e "crashing" é um equívoco comum ... mas na realidade, o MySQL é quase certamente sendo morto pelo sistema por causa de uma grave condição de pouca memória, geralmente causada pelo Apache.

sudo egrep 'kernel|oom' /var/log/syslog

Observe que isso não é um erro:

InnoDB: Cannot allocate memory for the buffer pool

Este é o MySQL incapaz de reiniciar, mesmo que tente se recuperar depois de ser morto, porque <<> ainda não é 128 MB de memória livre no servidor, devido às crianças do Apache consumirem tudo.

Após a reinicialização, ninguém está conectado ao seu site, então o problema de memória desapareceu.

Veja link

Você precisa de mais memória, ou precisa executar o Apache e o MySQL em máquinas diferentes, ou precisa configurar o Apache para exigir menos memória sob carga.

E pelo amor de um que é bom e correto, nunca use mysqltuner ou algo parecido. Eles fazem suposições, dão maus conselhos e não são seus amigos. Deixe os valores padrão do MySQL como estão.

    
por Michael - sqlbot 13.12.2016 / 05:14