先日、こちらのエントリーでこのブログをGrav on Docker で構築したと書きました。
しばらく運用してて、どうもポスト時に頻繁にエラーが起きたり、一時的にアクセス不能になるケースが増えてきたので原因を調べました。
結果としては、Lightsailのインスタンスサイズをスケールアップして解決したわけですが、今日はその際の調査メモを書きたいと思います。
Lightsailの仕様と対処理負荷
そもそも、LightsailのCPU処理は、EC2の下位インスタンスと同じでとても癖があります。
というのは、
- 常時使えるCPUリソースはかなり低めに決まっている
- 超えた分は、一時的には"バースト"され処理されるが、クレジットが尽きると、最低保証の処理リソースしか使えなくなる
というもの。
エラーが起きた時、30分ぐらい放置すると治った、というのはまさにこれのようだ。
細かい数値はこちらのページの解説をみるとよい。
Dockerを使う最低ライン
Docker自体のオーバーヘッドを考慮する時、そもそもLigthsailの512MBプランは無理そう、、というのが今回運用して明確になった。
なので、LightsailでDocker運用したい場合には、1GBのやつ(月5ドル)を使おう。
ちなみにCPUに関しては、キャパシティが2GB(月10ドル)までは倍増してゆくので、スケールアップするならそこまでのラインがよいだろう。それ以上は、ラウンドロビンやLBで分散した方が安くなりそう。
スケールアップ手順
Lightsailはスケールアップに関しては、めちゃくちゃ簡単だ。
公式ページにも書いてある通り、
- スナップショットを取る
- インスタンス停止する
- "スナップショットから" 新規インスタンス生成を選択(通常のインスタン生成のリンクからではないことにだけ注意)
- Static IPを付け替え
- 正常に移行が確認できたら、古いインスタンスとスナップショットを削除
で終了である。
負荷状況の確認
今回の問題の切り分け、インスタンスの管理画面のメトリクス一覧のグラフをみると、簡単に可能だ。
常用できるキャパシティを超えているようなグラフだったら、スケールアップを検討すべき。ということである。