Snowflakeリソースモニターのクレジット上限到達エラー解除手順

Snowflakeリソースモニターのクレジット上限到達エラー解除手順の解説アイキャッチ。「Resource monitor has reached its credit quota」発生時のクォータ解除と上限引き上げ手順をSQLとSnowsightの両面からやさしく整理 Snowflake
この記事をシェアする𝕏B!FacebookLINEPocket

[{“placeholder”:”intro”}]

はじめに:突然クエリが止まった!その正体は?

こんにちは!ある日Snowflakeでクエリを流そうとしたら、「Resource monitor has reached its credit quota」 というエラーが出てクエリが一切動かなくなった…そんな経験はありませんか?

「障害かな?」と慌ててしまいがちですが、実はこれはSnowflakeが 意図的にウェアハウスを止めている状態 です。つまり「使いすぎ防止のブレーキ」がしっかり効いているサインなのです。

この記事では、エラーが出る仕組みと、安全にクォータを解除して再びクエリを動かす手順を、初心者の方にもわかりやすく解説します。

図解イメージで示すSnowflakeリソースモニターのクレジット上限到達によるウェアハウス自動停止の仕組みと「Resource monitor has reached its credit quota」エラーが発生する流れを表した概要図

そもそもリソースモニターって何?

リソースモニター (Resource Monitor) は、Snowflakeのクレジット消費量を監視し、設定した上限に達したら通知やウェアハウス停止を自動で行う「コストの見張り役」です。基本概念については Snowflakeリソースモニター入門|予算超過を防ぐ仕組み でも詳しく解説していますので、合わせて読んでみてください。

リソースモニターには 3種類のアクション を設定できます。

  • NOTIFY: 通知だけ送る (止めない)
  • SUSPEND: 実行中のクエリ完了後にウェアハウスを停止
  • SUSPEND_IMMEDIATE: 実行中のクエリも即時キャンセルして停止

「Resource monitor has reached its credit quota」エラーは、SUSPENDまたはSUSPEND_IMMEDIATEの閾値 (通常100%) に到達した結果として発生します。

エラーが出る原因をチェック

典型的な原因は次の3つです。

  1. 月初に設定したクレジット枠を月の途中で使い切った
  2. FREQUENCY (リセット周期) がMONTHLY以外 で、想定より早く到達した
  3. 意図せず大きなクエリを連発 し、自動サスペンドが効く前に消費が膨らんだ

まずは現状を確認しましょう。ACCOUNTADMINロールで以下を実行します。

USE ROLE ACCOUNTADMIN;
SHOW RESOURCE MONITORS;

出力の used_creditscredit_quota を比較すれば、どれだけ使ったか一目でわかります。

解除手順①:クォータをリセットする

もっとも簡単な方法は、クォータを次のサイクルへ進めるか、credit_quotaを引き上げることです。

-- 上限を 100 → 200 クレジットへ引き上げ
ALTER RESOURCE MONITOR my_monitor
  SET CREDIT_QUOTA = 200;

上限を上げると used_credits < credit_quota となり、停止していたウェアハウスを再開できるようになります。

ウェアハウスを再開する

ALTER WAREHOUSE my_wh RESUME;

これで再びクエリが流れるようになります。ただし根本原因を見ずに上限だけ上げると同じことを繰り返すので注意してください。

Snowflakeリソースモニターのcredit_quotaをALTER RESOURCE MONITORで100から200クレジットへ引き上げ、停止中のウェアハウスをRESUMEで再開して上限到達エラーを解除する操作画面のスクリーンショット

解除手順②:Snowsightでの操作

GUIで操作したい場合は、Snowsightの 「Admin」→「Cost Management」→「Resource Monitors」 から該当モニターを選び、「Edit」で Credit Quota を上書きすればOKです。あわせてScheduleでFREQUENCY (Monthly / Daily / Weekly / Yearly / Never) も見直すとよいでしょう。

再発防止のコツ

  • NOTIFYを段階的に仕込む (例: 50%, 75%, 90%でメール通知)
  • ウェアハウス単位とアカウント単位でモニターを分けて細かく制御
  • AUTO_SUSPENDを短めに設定して無駄な稼働を減らす
  • 使用状況を定期的に可視化する

使用量の可視化方法は Snowflakeウェアハウス使用状況の可視化とコスト最適化入門 や、Snowflakeクレジット消費を分析|ACCOUNT_USAGEビュー入門 に詳しくまとめてあります。同時実行が多いケースでは マルチクラスタウェアハウス の活用も検討してみてください。

例:段階通知付きリソースモニターの作成

CREATE OR REPLACE RESOURCE MONITOR my_monitor
  WITH
    CREDIT_QUOTA = 500
    FREQUENCY = MONTHLY
    START_TIMESTAMP = IMMEDIATELY
  TRIGGERS
    ON 75 PERCENT DO NOTIFY
    ON 90 PERCENT DO NOTIFY
    ON 100 PERCENT DO SUSPEND
    ON 110 PERCENT DO SUSPEND_IMMEDIATE;

ALTER WAREHOUSE my_wh
  SET RESOURCE_MONITOR = my_monitor;

このように設定しておけば、いきなり停止する前に通知で気付けます。

まとめ

「Resource monitor has reached its credit quota」は、Snowflakeがしっかりブレーキを踏んでくれた証拠です。慌てず以下の流れで対処しましょう。

  1. SHOW RESOURCE MONITORS で使用量を確認
  2. 必要に応じて CREDIT_QUOTA を引き上げ
  3. ALTER WAREHOUSE ... RESUME でウェアハウスを再開
  4. 段階的なNOTIFYトリガーを設定して再発防止

命名規則を整えておくと運用がさらに楽になるので、Snowflake命名規則ベストプラクティス も合わせてどうぞ。

参考リンク

関連記事

この記事をシェアする𝕏B!FacebookLINEPocket