はじめに
あるAmazon Linux 2023の環境でdnf upgradeを実行すると、プロセスが強制終了してしまう事象が発生しました。
# dnf upgrade --releasever=latest Killed
この環境はLightsailで、EC2のような手軽なサイズ変更ができないため、別の方法で対応しました。
原因調査
まずは原因調査です。直近のOOMやジャーナルログを確認します。
OOM
dmesg -T | egrep -i 'oom|out of memory|killed process|dnf|python|rpm' | tail -n 80ジャーナルログ
journalctl -k -b | egrep -i 'oom|out of memory|killed process' | tail -n 80dnfのプロセスがOut of memoryでkillされたことがわかりました
Jan 29 12:09:48 prod-web1 kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/user.slice/user-1001.slice/session-9.scope,task=dnf,pid=341952,uid=0 Jan 29 12:09:48 prod-web1 kernel: Out of memory: Killed process 341952 (dnf) total-vm:719788kB, anon-rss:100452kB, file-rss:4kB, shmem-rss:0kB, UID:0 pgtables:636kB oom_score_adj:0
不足しているメモリ領域を確保する
ディスク上にメモリのスワップ領域を作成して、利用できるメモリ領域を増やします。
ディスク容量が十分にあることを確認したあと、スワップファイルを作成します。
fallocate -l 2G /swapfile権限設定
chmod 600 /swapfile初期化
mkswap /swapfile有効化
swapon /swapfile再起動後も有効にする場合は以下のコマンドを実行しますが、今回はやりませんでした。
echo '/swapfile none swap defaults 0 0' >> /etc/fstab領域が完成したか確認
swapon --show NAME TYPE SIZE USED PRIO /dev/zram0 partition 407M 131.4M 100 /swapfile file 2G 1.9M -2
アップデートが成功しました
sudo dnf upgrade --releasever=latest (略) systemtap-sdt-dtrace-5.2-1.amzn2023.0.5.x86_64 tzdata-2025c-1.amz vim-common-2:9.1.1591-1.amzn2023.0.1.x86_64 vim-data-2:9.1.159 vim-enhanced-2:9.1.1591-1.amzn2023.0.1.x86_64 vim-filesystem-2:9 vim-minimal-2:9.1.1591-1.amzn2023.0.1.x86_64 xfsprogs-6.12.0-3. xxd-2:9.1.1591-1.amzn2023.0.1.x86_64 Installed: apr-util-lmdb-1.6.3-1.amzn2023.0.2.x86_64 gcc-plugin-annobin-11.5.0-5.amzn2023.0.5.x86_64 kernel-devel-1:6.1.159-182.297.amzn2023.x86_64 libdav1d-1.5.1-51.amzn2023.x86_64 libheif-1.19.8-1.amzn2023.0.3.x86_64 openh264-2.6.0-2.amzn2023.x86_64 svt-av1-libs-2.3.0-47.amzn2023.x86_64 x265-libs-4.1-2.amzn2023.x86_64 Removed: kernel-devel-6.1.129-138.220.amzn2023.x86_64 Complete! #成功したので、スワップを削除します 停止
swapoff /swapfile永続設定を削除(有効化した場合)
sed -i '\|/swapfile|d' /etc/fstabファイル削除
rm -f /swapfile
ということで、スペックの低いサーバーでもメモリ不足を解決して作業する方法の紹介でした。




