
AI Assisted
この記事は筆者の実体験をもとに執筆し、AIによる構成・推敲を経て公開しています。
本サイトはGoogle Cloud Run で運用しているのですが、月末の請求を見て違和感を覚えました。
「アクセス数の割に、料金が高すぎる...?」
トラフィックはまだそこまで多くない個人サイトにも関わらず、毎日コンスタントに課金され続け、想定していた予算を大きく超えていたのです。 調査の結果、原因は**「デプロイ方法を移行した際に、古い設定が見えない形で残っていたこと」**でした。
今回は、Cloud Run運用で見落としがちな CPU Throttling(CPUの割り当て) の設定と、その解決策を共有します。
実際の請求画面。設定変更(右端)を境に、コストが激減しているのがわかります。
結論から言うと、Cloud Runの設定で CPU Throttling(CPUの割り当て) が false になっていました。
Cloud Runには、CPUをどのように割り当てるか決める2つのモードがあります。
| 設定 | run.googleapis.com/cpu-throttling | 課金の仕組み | 想定ユースケース |
|---|---|---|---|
| リクエスト処理中のみ | true (デフォルト) | リクエストを処理している間だけ課金 | Webサイト、API |
| 常時割り当て | false | インスタンスが起動している間ずっと課金 | バックグラウンド処理、WebSocket |
通常のWebサイトであれば、デフォルトの true(リクエスト処理中のみ)で十分です。
しかし、私の環境ではここが false(常時割り当て)になっていたため、アクセスがない時間帯もインスタンスが起動している限り課金され続けていたのです。
ここが今回の落とし穴でした。 **「デプロイ方法を変えたのに、過去の設定が引き継がれていた」**のです。
--no-cpu-throttling を記述していた。cloudbuild.yaml には CPU Throttling に関する記述をしなかった(デフォルトに戻ると想定)。false 設定が亡霊のように残り続けていた。現在の設定は以下のコマンドで確認できます。
gcloud run services describe [SERVICE_NAME] \
--region=asia-northeast1 \
--format="yaml(spec.template.metadata.annotations)"
もし以下のように表示されたら、あなたも「常時課金」されています。
run.googleapis.com/cpu-throttling: 'false' # ← これが課金の元凶
設定を true(リクエスト中のみ割り当て)に戻すことで解決します。
gcloud run services update [SERVICE_NAME] \
--region=asia-northeast1 \
--cpu-throttling
CI/CDを使っている場合、設定ファイルに明示的に記述しておくことを強くおすすめします。これで「設定の亡霊」に悩まされることはありません。
steps:
- name: 'gcr.io/cloud-builders/gcloud'
args:
- 'run'
- 'deploy'
- '${_SERVICE_NAME}'
# ... 他の設定 ...
- '--cpu-throttling' # ★ここを明示的に追加
今回の失敗からの学びは3つです。
--cpu-throttling や --min-instances など、料金に直結するパラメータは省略せずに書くべきです。gcloud run services describe で現在の全設定をダンプして確認しましょう。設定を見直した翌日から、課金額は正常な範囲に落ち着きました(グラフの右端)。 Cloud Runの請求が想定より高いと感じたら、まずはこの設定を疑ってみてください。
スポーツ×ITの会社でバックエンドエンジニア兼マネージャーとして勤務。インテル関連の情報を中心に、AI・IT技術やサイト運用ノウハウも発信しています。
最終更新: 2026年1月1日
© 2025 nero15.dev. All rights reserved.