MariaDB、PHPのクラッシュ防止のためのスワップ設定
概要
BookStackを試すためにAWS Lightsailのミニマムの構成(512 MB RAM, 2 vCPUs, 20 GB SSD)でスタートしたところ、ブラウザが内部エラーの500を受け取って編集も閲覧もできない状況が頻発しました。原因はMariaDBがクラッシュした場合に常にLaravelが500を返すためですが、その原因の1つにメモリ不足が考えられるため、MariaDBが落ちたらDBを再起動する設定を追加することに加えてSWAP領域を確保することにしました。本記事はその方法を記載したものです。
ChatGPTの見解
✅ swap は絶対に設定すべき
理由1:512MBはOSだけでほぼ使い切る
Ubuntu + Apache + PHP + MariaDB + Laravel の構成だと、起動しているだけで400〜500MB前後使います。
そこにログイン処理やページ表示が重なると、MariaDBかPHPがkill対象になります。
理由2:vCPUは2コアあるが、メモリ不足で性能が発揮されない
マルチスレッド処理をさせたくても、メモリ不足ですぐにI/O待ち(スワップアウト)に入り、結果的に動作が遅くなります。
理由3:swapがあれば「落ちない」だけでかなり安定する
多少遅くなることはあっても、落ちない=HTTP 500が連発しないというメリットは非常に大きいです。
設定方法
✅ swap設定
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
これで次回の再起動後も自動で有効になります。
✅ (参考)swap使用量の確認コマンド(定期的にチェック)
free -h
または詳細:
swapon --show
例:
NAME TYPE SIZE USED PRIO
/swapfile file 1G 132M -2
🔚 結論:今すぐswapを作るのが最善手
項目 | 内容 |
---|---|
RAM | 512MB → Laravel + DB構成では不足 |
swap | 必須(なければ落ちる) |
推奨サイズ | 1GB(十分) |
リスク | 遅くなる可能性はあるが、落ちるより100倍マシ |
実行タイミング | 今すぐでOK、安全に作成できる |