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

У мене, здається, є "безліч" безкоштовної оперативної пам’яті, і у мене також є доступний своп:

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

Як я можу вирішити / вирішити цю проблему? Я розшукував інтервебс на підказки, але нічого не допомогло.


1
Як виглядає пам'ять прямо перед тим, як вона вибивається? В [ERROR] mysqld: Out of memoryвпевнений , що виглядає як сильний натяк. Ви перевірили ваші системні журнали, щоб побачити, чи вирішило ядро ​​(OOM) вбити mysql?
Зоредаче

Ви повинні topзаписати використані ручки файлів та пам'ять, що використовується як до, так і після збоїв (можливо, навіть дамп команд кожного інтервалу), щоб знати, що може спричинити збій. Будь-які інші сервіси працюють на ваших серверах, як mysql (mariadb)?
Ешвін кумар

1
Є справді чудова відповідь щодо DBA, який здається корисним: dba.stackexchange.com/questions/1927/…
Метт Хаманн

Спробувати performance_schema = вимкнено?

Відповіді:


9

Я сподіваюся, що вам це буде корисно.

спробуйте

performance_schema = off

в [mysqld]розділі конфігурації.

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


Спробуйте це. Повідомлюся незабаром після того, як я надаю послугу через кілька днів, щоб постійно працювати і працювати.
Метт Хаманн

Здається, це допомогло зовсім небагато. Не впевнений, що на 100% вирішено, але він працює досить добре, оскільки я налагодив це. Дякую.
Метт Хаманн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.