MySQL (MariaDB) plante fréquemment

9

J'ai récemment migré un ancien serveur exécutant MySQL vers un nouveau VPS exécutant MariaDB 5.5. Je n'ai pas trop de fonctionnement sur le serveur (juste quelques sites PHP) et la mémoire libre semble être OK, mais la base de données continue de planter - parfois tous les quelques jours, d'autres fois en quelques heures.

Je reçois les erreurs suivantes dans les journaux:

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

J'ai joué avec les paramètres my.cnf pour InnoDB Heap, ce qui ne semble pas aider. Voici la partie pertinente:

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

Il me semble avoir "beaucoup" de RAM libre, et j'ai aussi un échange disponible:

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

Comment puis-je résoudre / dépanner ce problème? J'ai parcouru l'interwebz pour trouver des indices, mais rien n'a aidé.

Matt Hamann
la source
1
À quoi ressemble la mémoire juste avant qu'elle ne plante? Le [ERROR] mysqld: Out of memorysûr ressemble à un indice fort. Avez-vous vérifié vos journaux système pour voir si le noyau (MOO) a décidé de tuer mysql?
Zoredache
Vous devez enregistrer les descripteurs de fichiers utilisés et la mémoire utilisée à la fois avant et après le crash (peut-être même le vidage de la topcommande à chaque intervalle) pour savoir ce qui pourrait provoquer le crash. D'autres services fonctionnent-ils sur vos serveurs comme mysql (mariadb)?
Ashwin kumar
1
Il y a une très bonne réponse sur DBA qui semble être utile: dba.stackexchange.com/questions/1927/…
Matt Hamann
Essayez performance_schema = off?

Réponses:

9

J'espère que cela vous sera utile.

essayer

performance_schema = off

dans la [mysqld]section de votre configuration.

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

sheng chi
la source
J'essaie. Je ferai rapport peu de temps après avoir donné le service quelques jours pour rester opérationnel en permanence.
Matt Hamann
Semble avoir beaucoup aidé. Je ne sais pas 100% résolu, mais ça fonctionne plutôt bien depuis que j'ai ajusté cela. Merci.
Matt Hamann