Amazon Lightsail(Ubuntu)での「突然死」対策メモ ーー swapfile(4GB)導入と確認手順(再現用)

以下、次回の構築でそのまま再現できることを優先して、コマンド列と確認ポイントを細かく付けた運用メモとして再整理します。


Amazon Lightsail(Ubuntu)での「突然死」対策メモ

swapfile(4GB)導入と確認手順(再現用)

0. 背景

  • Lightsail がハングすると SSH も効かず、Web コンソールから Reboot 以外に復旧できない事象が発生。
  • 経験者コメントより メモリ不足(OOM 近傍)で OS 全体が固まる可能性が高い。
  • 対策として、ストレージに余裕がある場合 swapfile を作成し、メモリ逼迫時の退避先を用意する。

目的

  • メモリ逼迫時に OS 全体が固まる事態(SSH不可)を回避する。
  • 落ちるとしても「ログ確認できる状態」で止める(調査可能化)。

1. 事前確認(swap を置けるか)

1-1. ルートディスクの空き容量確認(最重要)

df -h /

判断:

  • Avail6〜8GB以上 → 4GB swap 作成可能
    (今回:Avail 27G で余裕)

1-2. ディスク/マウント構成確認

lsblk

確認ポイント:

  • / が通常のパーティション(例:nvme0n1p1)にマウントされていること
  • 特殊な読み取り専用や異常なマウント構成でないこと

1-3. 既存 swap の有無確認

swapon --show
  • 何も出なければ swap 未設定 → 新規作成 OK

追加で全体状況:

free -h

確認ポイント:

  • Swap: 0B であること(既存 swap がない)

1-4. I/O の簡易確認(念のため)

iostat -x 1 3

確認ポイント:

  • %util が常時高くないこと(目安:90%超が続くなら注意)
  • iowait が高止まりしていないこと
    (今回:ほぼ 0 で問題なし)

iostat が無ければ導入:

sudo apt update
sudo apt install -y sysstat

2. swapfile 作成(4GB)

2-1. swapfile を作成

推奨:fallocate(高速)

sudo fallocate -l 4G /swapfile

※ fallocate が使えない場合(代替:dd、低速)

sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress

2-2. パーミッションを厳格化(重要)

sudo chmod 600 /swapfile

確認:

ls -lh /swapfile

期待(例):

  • -rw------- になっていること

2-3. swap として初期化

sudo mkswap /swapfile

2-4. swap 有効化

sudo swapon /swapfile

3. 有効化確認(その場で必ず実施)

3-1. swap の状態確認

swapon --show

期待(例):

NAME      TYPE SIZE USED PRIO
/swapfile file   4G   0B   -2

3-2. free で全体確認

free -h

期待(例):

Swap: 4.0Gi  0B  4.0Gi

4. 永続化(再起動後も自動で有効にする)

4-1. /etc/fstab に追記

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

4-2. fstab の追記内容確認

tail -n 5 /etc/fstab

確認ポイント:

  • /swapfile none swap sw 0 0 が 1行だけ追加されていること
    (重複追記に注意。複数回実行すると行が増える)

5. swappiness 設定(推奨:10)

5-1. 現在値の確認

cat /proc/sys/vm/swappiness

5-2. 即時反映

sudo sysctl vm.swappiness=10

5-3. 永続化

echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf

5-4. 永続化ファイル確認

cat /etc/sysctl.d/99-swappiness.conf

5-5. 設定反映確認

sysctl vm.swappiness

期待:

vm.swappiness = 10

6. 再起動テスト(永続化確認)

6-1. 再起動

sudo reboot

6-2. 再起動後の確認(最重要)

swapon --show
free -h

期待:

  • /swapfile が表示される
  • Swap が 4GB として認識されている

7. 実施後に観測された状態(正常例)

実施後の例:

/swapfile file 4G 256K -2

解釈:

  • swap が正常に機能している
  • Linux が低優先度ページ等を少量退避することがあり、数KB〜数MBの使用は正常
  • 重要なのは「swap がある状態で OS が固まりにくくなる」こと

8. 追加の確認(任意・原因追跡用)

8-1. OOM 発生の有無を確認

dmesg -T | grep -i oom
  • 出る場合:メモリ逼迫が実際に起きている証拠
  • 出ない場合:現状はまだ余裕

8-2. メモリ逼迫の常態化判定

free -h
swapon --show

判断の目安:

  • swap used が 数十〜数百MB:許容
  • swap used が 1GB超を常用:プラン増強やプロセス整理を検討

9. 注意点(運用上の要点)

  • swap は性能向上ではなく、「完全フリーズ回避の保険」
  • 1GB RAM の Lightsail では swap 無し運用は不安定になりやすい
  • swap が増え続ける場合は「根本原因(メモリ消費プロセス)」も調査対象

以上で、次回構築時にコマンドを上から順に実行すれば同等の状態を再現できます。
必要なら、今回の Lightsail 上で「どのプロセスがメモリを食っているか」を特定するためのコマンド群(systemd サービス前提)も同じ粒度で追記します。

未分類

Posted by ebata