Mariadbが時々落ちるようになった
MariaDBが落ちる
夜、明け方と続けてmariadbが落ちたので調査
以下のようなメッセージが/var/log/messagsesに出ていてメモリ不足でOOMに殺された感じ?
OOM killed process xxxxx (mariadbd) total-vm:xxxxxxxkB, anon-rss:xxxxxxkB, file-rss:xxxxkB OOM killed process xxxxx (httpd) total-vm:xxxxxxkB, anon-rss:xxxxxxkB, file-rss:xxxxxkB [ERROR] InnoDB: Cannot allocate memory for the buffer pool
MariaDBのパラメータを調整
安いプランのVPSなのでサーバのメモリ自体がひっ迫しているのかもだが、
取り合えず、MariaDBの負荷を下げるためにパラメータ「innodb_buffer_pool_size」を弄ってしばらく様子を見ることにする。
※借りているVPSだがサーバのメモリは2Gでswapは「free -m」で見ても0なのでないっぽい。
現在の起動時のinnodb_buffer_pool_sizeの値は
InnoDB: Initializing buffer pool, total size = 134217728, chunk size = 134217728
で128Mっぽいので、実メモリの50%くらいは良さそうとの情報もあり、512Mに上げてみる
以下を参考に
https://atmarkit.itmedia.co.jp/ait/articles/1602/25/news017_2.html
/etc/my.cnf.d/server.cnf
⇒[mysqld]セクションを以下のように修正。
[mysqld] innodb_buffer_pool_size = 512M query_cache_size = 64M
MaridaDBを再起動。
systemctl restart mariadb
起動時に
InnoDB: Initializing buffer pool, total size = 536870912, chunk size = 134217728
と出たので繁栄されているっぽい。
SQLで実際に設定が反映されているか確認
MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_%'; +-------------------------------------+----------------+ | Variable_name | Value | +-------------------------------------+----------------+ | innodb_buffer_pool_chunk_size | 134217728 | | innodb_buffer_pool_dump_at_shutdown | ON | | innodb_buffer_pool_dump_now | OFF | | innodb_buffer_pool_dump_pct | 25 | | innodb_buffer_pool_filename | ib_buffer_pool | | innodb_buffer_pool_instances | 1 | | innodb_buffer_pool_load_abort | OFF | | innodb_buffer_pool_load_at_startup | ON | | innodb_buffer_pool_load_now | OFF | | innodb_buffer_pool_size | 536870912 | +-------------------------------------+----------------+
MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE 'query_cache_%'; +------------------------------+----------+ | Variable_name | Value | +------------------------------+----------+ | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 67108864 | | query_cache_strip_comments | OFF | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | +------------------------------+----------+
ちなみに変更対象としてちらちら見かけた
innodb_log_file_size
については
MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE 'innodb_log_file_%'; +---------------------------+-----------+ | Variable_name | Value | +---------------------------+-----------+ | innodb_log_file_size | 100663296 | | innodb_log_files_in_group | 1 | +---------------------------+-----------+
100,663,296.0 Bytes (B) = 96.0 Megabytes (MB)
だったので、少ないという訳ではないのかなと今回変更していない。