#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