メインコンテンツへスキップ

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、安全に作成できる