mysqldのOut of memory対策

AlmaLinux9に移行して、mysqlサーバのバージョンを上げて、myISAMからinnoDBに変えたところ、mysqldがOut of memoryでOOM Killerにkillされる現象が頻発してきました。前述の通り、色々変えているので、きっかけは不明のままです。本現象が発生した後は、サーバ自体が不安定となり、最終的には強制再起動となるので、mysqlではない別の部分に真因がある可能性も低くありません。

エラー状況を確認

# less /var/log/message

May 15 05:36:11 omoshiro-joho kernel: Out of memory: Killed process 138863 (mysqld) total-vm:1789480kB, anon-rss:408140kB, file-rss:0kB, shmem-rss:0kB, UID:27 pgtables:1200kB oom_score_adj:0

メモリ量を確認

# free -m
               total        used        free      shared  buff/cache   available
Mem:             956         816          74          34         235         139
Swap:              0           0           0

mysqlの情報を確認

mysql> show global variables where variable_name like 'innodb_page_size';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| innodb_page_size | 16384 |
+------------------+-------+
1 row in set (0.02 sec)
mysql -u root -p -e "SHOW ENGINE INNODB STATUS\G;" | less

----------------------
BUFFER POOL AND MEMORY
----------------------
Total large memory allocated 0
Dictionary memory allocated 500256
Buffer pool size   8192
Free buffers       7133
Database pages     1054

Buffer poolの容量は、8192 * 16KB = 128MiB となる。

mysqlの設定変更

# emacs /etc/my.cnf.d/mysql-server.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid

innodb_buffer_pool_size=64M

システムのメモリに対して十分に小さいので、mysqlは直接関係ない気もしますが、この変更で様子見をします。 ただ、mysqlのメモリ消費量は圧倒的に多いので、やはり怪しいのは、mysqlかな。

$ top
top - 10:01:41 up  1:46,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  99 total,   1 running,  98 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.2 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.2 hi,  0.0 si,  0.0 st
MiB Mem :    956.4 total,     77.3 free,    799.0 used,    252.6 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.    157.5 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   2031 mysql     20   0 1711636 413464  16776 S   0.7  42.2   0:06.07 mysqld

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-05-15 (月) 10:04:12