目的
dnf list等のコマンドを実行すると強制終了するようになった。
dnfコマンドを正常に実行できるようにする。
確認すると、メモリとスワップ領域が足りないのでOOM Killerが動いていた。
スワップ領域を増やすことでOOM Killerが動かないようにする。
環境
$ cat /etc/redhat-release
> Rocky Linux release 9.3 (Blue Onyx)
OOM Killer の概要
OOM Killer = Out Of Memory Killer
メモリが枯渇した場合、プロセスを強制終了させてメモリ確保を行う仕組み。
ログの確認
下記コマンドを実行する。
$ sudo grep 'Killed' /var/log/message
下記のようなログがあれば、OOM Killerが動いている。
Apr 17 10:47:28 srv kernel: Out of memory: Killed process 261831 (dnf) total-vm:695628kB, anon-rss:553620kB, file-rss:0kB, shmem-rss:0kB, UID:0 pgtables:1260kB oom_score_adj:0
スワップ領域について確認
下記コマンドを実行する。
$ sudo swapon --show
結果は下記の通りだった。
NAME TYPE SIZE USED PRIO
/swapfile file 256M 229M -2
ついでにfree -lmの実行結果は下記の通りだった。
total used free shared buff/cache available
Mem: 769 331 420 7 138 437
Low: 769 348 420
High: 0 0 0
Swap: 255 200 55
推奨スワップ領域のサイズ
上記ページを参考にすると、
メモリ領域が700MBほどなのでとりあえず2GBのスワップ領域に変更する。
既存のスワップ領域を無効化
下記コマンドを実行する。
$ sudo swapoff /swapfile
スワップ領域が無効化されたことを確認するために、下記コマンドを実行する。
$ sudo swapon --show // 何も表示されないはず。
$ sudo free -lm // Swapのtotalが0になっているはず。
スワップファイルを作成
下記コマンドを実行する。
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
$ sudo mkswap /swapfile
スワップ領域を有効化
下記コマンドを実行する。
$ sudo swapon /swapfile
スワップ領域が有効化されたことを確認するために、下記コマンドを実行する。
$ sudo swapon --show
$ sudo free -lm
dnfコマンドが実行できることを確認
下記コマンドを実行する。
$ dnf -y list
強制終了せずに実行できたことを確認後、free -lm コマンドを実行すると結果は下記の通りだったので、
変更前のスワップ領域のサイズ(255MB)では足りなかったことがわかる。
total used free shared buff/cache available
Mem: 769 320 381 6 188 448
Low: 769 387 381
High: 0 0 0
Swap: 2047 263 1784
そもそもスワップ領域使わないようメモリ増やした方が良いけれども、予算がががが…。