経緯
Goで書いた簡単なバックエンドのDockerコンテナをCloud Runで動かそうとしてデプロイしたら失敗した。
ログを見たらメモリ上限を越えているとのこと。
Memory limit of 256M exceeded with 277M used. Consider increasing the memory limit, see https://cloud.google.com/run/docs/configuring/memory-limits
ログにはhttps://cloud.google.com/run/docs/configuring/memory-limitsを見ろと書いてある。
見てみると、Cloud Runにおけるメモリの扱いについて説明されている。
許容されるメモリ上限を超える Cloud Run コンテナ インスタンスは終了します。
コンテナ インスタンスの使用可能なメモリは次のとおりです。
アプリケーション実行可能ファイルを実行する(実行可能ファイルをメモリに読み込む必要があるため)
アプリケーション プロセスでメモリを割り当てる
ファイル システムへのファイルの書き込み
デプロイされたコンテナ イメージのサイズは、使用可能なメモリにはカウントされません。
つまり、「コンテナ内で実行するプログラムに必要なメモリサイズ」がデフォルトの設定上限を越えているということらしい(デフォルトは256MB)。
同ページにはGUI上での対処法は書いてあるが、gcloud run
コマンドではどうするのか調べたくてgcloud runのリファレンスを見てみる。見事に書いてない。困った。
解決法
Google Cloud Run の運用 - Qiitaに書いてた。
gcloud run
コマンドには--memory
フラグがあるのでこれを使う。
gcloud run deploy --project [ProjectID] gcr.io/[ProjectID]/[ServiceName] --memory 512