#author("2023-05-15T01:03:38+00:00","default:bokupi","bokupi")
#author("2023-05-15T01:04:12+00:00","default:bokupi","bokupi")
* mysqldのOut of memory対策 [#h2486ebf]

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

** エラー状況を確認 [#vdd449da]

 # 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

** メモリ量を確認 [#e1b96170]

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

** mysqlの情報を確認 [#e06a15c7]

 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の設定変更 [#l7fd128f]

 # 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 - 10:01:41 up  1:46,  1 user,  load average: 0.00, 0.00, 0.00
 $ 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