MySQL (MariaDB) ล้มเหลวบ่อยครั้ง


9

ฉันเพิ่งย้ายเซิร์ฟเวอร์เก่าที่ใช้ MySQL ไปยัง VPS ใหม่ที่ใช้ MariaDB 5.5 ฉันไม่ได้ทำงานมากเกินไปบนเซิร์ฟเวอร์ (เพียงไม่กี่เว็บไซต์ PHP) และหน่วยความจำฟรีดูเหมือนว่าจะตกลง แต่ฐานข้อมูลยังคงล้มเหลว - บางครั้งทุกสองสามวันเวลาอื่น ๆ ภายในไม่กี่ชั่วโมง

ฉันได้รับข้อผิดพลาดต่อไปนี้ในบันทึก:

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

ฉันได้เล่นกับการตั้งค่า my.cnf สำหรับ InnoDB Heap ซึ่งดูเหมือนจะไม่ช่วย นี่คือส่วนที่เกี่ยวข้อง:

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

ฉันดูเหมือนจะมี "RAM" ฟรี RAM และฉันก็มีการแลกเปลี่ยนเช่นกัน:

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

ฉันจะแก้ไข / แก้ไขปัญหานี้ได้อย่างไร ฉันขัดจังหวะ interwebz สำหรับเบาะแส แต่ไม่มีอะไรช่วย


1
หน่วยความจำมีลักษณะอย่างไรก่อนที่จะเกิดปัญหา [ERROR] mysqld: Out of memoryดูเหมือนว่าคำใบ้ที่แข็งแกร่ง คุณตรวจสอบบันทึกระบบของคุณเพื่อดูว่าเคอร์เนล (OOM) ตัดสินใจฆ่า mysql หรือไม่
Zoredache

คุณควรเข้าสู่ระบบจัดการไฟล์ที่ใช้และหน่วยความจำที่ใช้ทั้งก่อนและหลังความผิดพลาด (อาจแม้แต่การดัมพ์ของtopคำสั่งทุกช่วงเวลา) เพื่อรู้ว่าอะไรจะทำให้เกิดความผิดพลาด มีบริการอื่นใดที่ทำงานในเซิร์ฟเวอร์ของคุณเช่น mysql (mariadb)?
Ashwin kumar

1
มีคำตอบที่ยอดเยี่ยมเกี่ยวกับ DBA ที่ดูเหมือนจะเป็นประโยชน์: dba.stackexchange.com/questions/1927/ …
Matt Hamann

ลอง performance_schema = ปิดหรือไม่

คำตอบ:


9

ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ

ลอง

performance_schema = off

ใน[mysqld]ส่วนของการกำหนดค่าของคุณ

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


ลองทำดูสิ จะรายงานกลับในไม่ช้าหลังจากฉันให้บริการสองสามวันเพื่อให้ทำงานได้อย่างต่อเนื่อง
Matt Hamann

ดูเหมือนว่าจะช่วยได้ไม่น้อย ไม่แน่ใจว่าแก้ได้ 100% แต่มันทำงานได้ค่อนข้างดีตั้งแต่ฉันปรับนี้ ขอบคุณ
Matt Hamann
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.