MySQL (MariaDB) trava frequentemente

9

Migrei recentemente um servidor antigo executando o MySQL para um novo VPS executando o MariaDB 5.5. Não tenho muito em execução no servidor (apenas alguns sites PHP) e a memória livre parece estar correta, mas o banco de dados continua travando - algumas vezes a cada poucos dias, outras vezes em poucas horas.

Eu recebo os seguintes erros nos logs:

131231  1:43:04 [ERROR] mysqld: Out of memory (Needed 128917504 bytes)
131231  1:43:04 [ERROR] mysqld: Out of memory (Needed 96681984 bytes)
131231  1:43:04 [ERROR] mysqld: Out of memory (Needed 72499200 bytes)
131231  1:43:04 [ERROR] mysqld: Out of memory (Needed 54362112 bytes)
131231  1:43:04 InnoDB: The InnoDB memory heap is disabled
131231  1:43:04 InnoDB: Mutexes and rw_locks use GCC atomic builtins
131231  1:43:04 InnoDB: Compressed tables use zlib 1.2.3.4
131231  1:43:04 InnoDB: Using Linux native AIO
131231  1:43:04 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137756672 bytes) failed; errno 12
131231  1:43:04 InnoDB: Completed initialization of buffer pool
131231  1:43:04 InnoDB: Fatal error: cannot allocate memory for the buffer pool
131231  1:43:04 [ERROR] Plugin 'InnoDB' init function returned error.
131231  1:43:04 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
131231  1:43:04 [Note] Plugin 'FEEDBACK' is disabled.
131231  1:43:04 [ERROR] Unknown/unsupported storage engine: InnoDB
131231  1:43:04 [ERROR] Aborting

131231  1:43:04 [Note] /usr/sbin/mysqld: Shutdown complete

Eu brinquei com as configurações my.cnf do InnoDB Heap, o que parece não ajudar. Aqui está a parte relevante:

innodb_buffer_pool_size = 128M
innodb_log_buffer_size  = 8M
innodb_file_per_table   = 1
innodb_open_files       = 400
innodb_io_capacity      = 400
innodb_flush_method     = O_DIRECT

Parece que tenho "bastante" RAM grátis e também tenho algumas trocas disponíveis:

root@phoenix:~# free -m
             total       used       free     shared    buffers     cached
Mem:           994        923         71          0         19        417
-/+ buffers/cache:        486        508
Swap:         1023        131        892

Como posso resolver / solucionar esse problema? Procurei na internet por pistas, mas nada ajudou.

Matt Hamann
fonte
1
Como é a memória antes de travar? A [ERROR] mysqld: Out of memorycerteza parece uma dica forte. Você checou os logs do sistema para ver se o kernel (OOM) decidiu matar o mysql?
precisa saber é o seguinte
Você deve registrar os identificadores de arquivo usados ​​e a memória usada antes e depois da falha (talvez até o despejo de topcomando a cada intervalo) para saber o que poderia causar a falha. Quaisquer outros serviços executados em seus servidores como mysql (mariadb)?
Ashwin Kumar
1
Há realmente um grande resposta sobre a DBA que parece ser útil: dba.stackexchange.com/questions/1927/...
Matt Hamann
Tente performance_schema = desativado?

Respostas:

9

Espero que seja útil para você.

tentar

performance_schema = off

na [mysqld]seção de sua configuração.

https://mariadb.com/resources/blog/starting-mysql-on-low-memory-virtual-machines/

sheng chi
fonte
Dando uma chance. Irá relatar logo depois que eu fornecer o serviço alguns dias para permanecer em funcionamento de forma consistente.
Matt Hamann
Parece ter ajudado bastante. Não tenho certeza 100% resolvido, mas está funcionando muito bem desde que eu ajustei isso. Obrigado.
Matt Hamann