Cloud Runのオートスケールする条件がいまいちよく分からなかったので、調べてました。
結論として、ちゃんとした条件が分からなかったので、時間が取れるときにちゃんと実験したいです。
確実なのは公式ドキュメントなので、関係のありそうな歌唱から読んでいきます。
コンテナ インスタンスの自動スケーリングについて | Cloud Run のドキュメント | Google Cloud
Cloud Run では、リビジョンのスケーリングが自動的に行われます。すべての受信リクエストまたはイベントを処理できるように、必要なコンテナ インスタンスの数が調整されます。リビジョンがトラフィックを受信しない場合、デフォルトでは、コンテナ インスタンスの数がゼロにスケールインされます。このデフォルトは必要に応じて変更できます。インスタンスをアイドル状態のままにすることも、最小インスタンスの設定を使用してウォームアップを指定することもできます。
ここでは、CPU使用率が60%を維持するようにつまり60%を超えるとスケールするように読み取れます。
インスタンスあたりの最大同時リクエスト数(サービス) | Cloud Run のドキュメント | Google Cloud
Cloud Run サービスでは、リビジョンのスケーリングが自動的に行われます。すべての受信リクエストを処理できるように、必要なコンテナ インスタンスの数が調整されます。
ここでは、現在稼働してるインスタンスの合計最大同時実行数ではリクエストを処理しきれなくなりそうになるとスケールするように読み取れます。
リソースモデル | Cloud Run のドキュメント | Google Cloud
リビジョンは、受信したすべてのリクエストを処理できるように、コンテナ インスタンスの数を自動的にスケーリングします。1 つのコンテナ インスタンスが同時に多くのリクエストを受信する場合があります。同時実行の設定を使用すると、1 つのコンテナ インスタンスに同時に送信されるリクエストの最大数を設定できます。
ここも同じこと言ってますね。
まとめると、
- CPU60%を維持(超えない)ようにスケーリングする
- すべてのリクエストを処理できるように(同時実行数を超えると)スケーリングする
- ただし、最大インスタンス数の制限を超えてスケールすることはできない。
ということでいいんですかね?
余談ですが、Cloud Runのオートスケーリングについて調べてたときに見つけたこの動画すごく参考になりました。オートスケーリングに関しては、何も得るものがなかったんですが、ログとリクエストの紐付けとか運用上役に立つ知識が得られました。