MySQL (MariaDB) sering crash

9

Saya baru-baru ini memigrasi server lama yang menjalankan MySQL ke VPS baru yang menjalankan MariaDB 5.5. Saya tidak memiliki terlalu banyak berjalan di server (hanya beberapa situs PHP) dan memori bebas tampaknya baik-baik saja, tetapi DB terus macet - kadang-kadang setiap beberapa hari, kali lain dalam beberapa jam.

Saya menerima kesalahan berikut dalam log:

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

Saya telah bermain dengan pengaturan my.cnf untuk InnoDB Heap, yang sepertinya tidak membantu. Inilah bagian yang relevan:

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

Saya tampaknya memiliki "banyak" RAM gratis, dan saya memiliki beberapa swap juga tersedia:

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

Bagaimana saya bisa menyelesaikan masalah ini? Saya telah mencari-cari petunjuk di jaringan, tetapi tidak ada yang membantu.

Matt Hamann
sumber
1
Seperti apa memori itu tepat sebelum crash? Yang [ERROR] mysqld: Out of memorypasti terlihat seperti petunjuk yang kuat. Apakah Anda memeriksa log sistem Anda untuk melihat apakah kernel (OOM) memutuskan untuk membunuh mysql?
Zoredache
Anda harus mencatat file pegangan yang digunakan dan memori yang digunakan sebelum dan sesudah crash (bahkan mungkin dump topperintah setiap interval) untuk mengetahui apa yang dapat menyebabkan crash. Adakah layanan lain yang berjalan di server Anda seperti mysql (mariadb)?
Ashwin kumar
1
Ada jawaban yang sangat bagus untuk DBA yang sepertinya membantu: dba.stackexchange.com/questions/1927/…
Matt Hamann
Coba performance_schema = mati?

Jawaban:

9

Saya harap ini akan membantu Anda.

mencoba

performance_schema = off

di [mysqld]bagian konfigurasi Anda.

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

sheng chi
sumber
Cobalah ini. Akan melaporkan kembali segera setelah saya memberikan layanan beberapa hari untuk begadang dan berjalan secara konsisten.
Matt Hamann
Tampaknya telah membantu sedikit. Tidak yakin 100% terpecahkan, tetapi sudah berjalan cukup baik sejak saya menyesuaikan ini. Terima kasih.
Matt Hamann