新しいレンタルサーバー(AWS LightsailのCentOS7)にDocker-composeでデプロイを行ったところ、Django、mysql、nginxの3つのコンテナのうちnginxだけ起動しない事象が発生。
他のサーバーではちゃんと起動したのだが...
そのままではもちろん困るので原因を調査した。
Lightsailの格安プランではメモリが512MBしか使えない
もう結論を書いてしまったが、つまりそういうことである。
Lightsailの$3.5 最初の1ヶ月無料プランはかなり安いが、その分使えるリソースも少ない。
Linuxでメモリの使用状況を調べるコマンドを実行した。
下記の状態はコンテナ未起動時のもの。
free コマンドのmオプションは容量の単位をMBで表示してくれる。
# free -m
total used free shared buff/cache available
Mem: 485 69 270 8 14 370
Swap: 0 0 0
512Mどころか 485Mしか使えない...
Django、mysql、nginxの3構成でコンテナを運用すると、だいたい450MBくらいのメモリを使うので、起動処理でさらにメモリを使うとキャパオーバーしてしまうみたい。
メモリがないならスワップを使えばいいじゃない!
ということで、スワップ領域を新たに作成し、割り当てを行ったところ無事起動した。
コストカットしようとすると、その分色々トラブルが起こるな。
面白いからいいけど。