MySQL (MariaDB) stürzt häufig ab

9

Ich habe kürzlich einen alten Server mit MySQL auf einen neuen VPS mit MariaDB 5.5 migriert. Ich habe nicht zu viel auf dem Server (nur ein paar PHP-Sites) und der freie Speicher scheint in Ordnung zu sein, aber die Datenbank stürzt immer wieder ab - manchmal alle paar Tage, manchmal innerhalb weniger Stunden.

Ich erhalte die folgenden Fehler in den Protokollen:

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

Ich habe mit den my.cnf-Einstellungen für InnoDB Heap gespielt, was nicht zu helfen scheint. Hier ist der relevante Teil:

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

Ich habe anscheinend "viel" freien Arbeitsspeicher, und ich habe auch einen Swap zur Verfügung:

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

Wie kann ich dieses Problem lösen / beheben? Ich habe das Interwebz nach Hinweisen durchsucht, aber nichts hat geholfen.

Matt Hamann
quelle
1
Wie sieht der Speicher kurz vor dem Absturz aus? Das [ERROR] mysqld: Out of memorysieht sicher nach einem starken Hinweis aus. Haben Sie Ihre Systemprotokolle überprüft, um festzustellen, ob der Kernel (OOM) beschlossen hat, MySQL zu beenden?
Zoredache
Sie sollten die verwendeten Dateihandles und den verwendeten Speicher sowohl vor als auch nach dem Absturz protokollieren (möglicherweise sogar den topBefehlsauszug in jedem Intervall), um zu wissen, was den Absturz verursachen könnte. Laufen andere Dienste auf Ihren Servern wie MySQL (Mariadb)?
Ashwin Kumar
1
Es gibt eine wirklich gute Antwort auf DBA, die hilfreich zu sein scheint: dba.stackexchange.com/questions/1927/…
Matt Hamann
Versuchen Sie performance_schema = off?

Antworten:

9

Ich hoffe es wird dir hilfreich sein.

Versuchen

performance_schema = off

im [mysqld]Abschnitt Ihrer Konfiguration.

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

Sheng Chi
quelle
Probieren Sie es aus. Ich melde mich bald wieder, nachdem ich dem Service ein paar Tage Zeit gegeben habe, um konstant zu bleiben.
Matt Hamann
Scheint ziemlich viel geholfen zu haben. Ich bin mir nicht sicher, ob ich zu 100% gelöst bin, aber es läuft ziemlich gut, seit ich das angepasst habe. Vielen Dank.
Matt Hamann