結論:timeoutを延ばす前に、DBがない時の業務境界を決める

Claude Code 2.1.274では、Claude Apps Gatewayの設定にstore.connect_timeout_secondsが追加され、Postgresへの接続待ち時間を延ばせます。公式changelogの既定値は5秒です。DBが数秒遅れて起動する環境では有効ですが、到達不能や認証失敗を長く待つ設定ではありません。timeout、再試行、エラー表示、トラフィック停止の四つを一組で決めてください。

読者の課題は、Gatewayのbootが止まった時に、Postgresの一時的な起動遅延なのか、URL・TLS・credentialの設定ミスなのかを切り分けられないことです。待ち時間だけを増やすと、障害が見えにくくなり、認証状態やrate limitの保存が不確かなままリクエストを受ける危険があります。

根拠はClaude Code v2.1.274公式リリースとClaude Code公式changelogです。Gatewayの構成、PostgreSQL 14以上、OIDC、private network、起動手順はClaude Apps Gateway公式文書を正本にします。既存のOTLP collector設計は観測経路、費用上限は支出停止、料金表示は請求照合が中心で、本稿はboot時のDB接続境界に限定します。

5秒の既定値と延長を比較する

状態判断記録する証拠
DBが数秒遅れて起動上限を延ばし、限定回数で再試行接続開始・成功時刻
DNS・network不可待たずに停止し経路を修正名前解決・route・security group
認証・TLS失敗credentialとsslmodeを確認secret version・server error
DB負荷・pool枯渇容量と接続数を確認Postgres metrics・active sessions
接続後のDB断in-flightと新規受付を分けるrequest数・再接続履歴

Gatewayは認証のdevice flowやrate-limit countersなど、DBに依存する状態を持ちます。公式文書にあるPostgreSQL 14以上、TLS推奨、バックアップ対象を前提に、接続待ちを「ただのヘルスチェック」と扱わないでください。起動を通すことより、DBがない時に何を保存できず、何を受け付けないかを決めることが重要です。

安全に設定する8手順

  1. 依存関係を書く。sign-in、rate limit、spend、audit、identityのうち、どれがDBを必要とするかを表にします。
  2. 既定値で実測する。まず5秒を基準に、DBがcold startする時の接続時間とboot結果を記録します。
  3. 接続経路を確認する。GatewayからPostgresまでのDNS、private network、security group、TLSを別々に確認します。
  4. credentialを照合する。secret version、user、database、sslmodeをreadbackし、ログへパスワードを出しません。
  5. 延長幅を決める。DBの起動遅延にだけ合わせ、無限待ちにせず、業務のSLOと運用者の検知時間を超えない値にします。
  6. 再試行を制限する。短い間隔で何度も接続してDBをさらに圧迫しないよう、回数、backoff、終了条件を固定します。
  7. 障害表示を確認する。2.1.274の改善に沿って、store.postgres_urlと設定timeoutを手掛かりに調査できるエラーをreadbackします。
  8. 受付境界を試す。DB停止中にlogin、inference、spend check、health checkがどう応答するかを検証し、fail-openを安易に採用しません。

設定ファイルの変更は、接続待ちだけの差分としてreviewします。Postgres URL、credentials、upstream model、IdP、listen設定を同じ変更で動かすと、原因が分かりません。まず検証環境でDBを意図的に数秒遅らせ、接続成功、timeout、retry上限、ログ、監視通知を一つずつ確認してください。

本番でtimeoutを延ばす場合は、延長前のboot時間と、延長後に許容する停止時間を比較します。長く待つ間にロードバランサーがhealth checkを落とす、orchestratorがpodを再起動する、同じDBへ接続が集中することがあります。アプリのtimeoutだけでなく、ingress、health check、container、databaseのtimeoutを一覧にして、最短の上限がどこかを確認します。

設定の妥当性は、正常起動だけでなく「DBがあとから復旧する」「復旧しない」「接続後に切断する」の三条件で確認します。各条件でGatewayが出すエラー、監視の通知、利用者への表示、運用者の次の操作を記録します。特に自動再起動がある環境では、timeout延長が再起動の連鎖を増やさないかを見て、接続poolと同時起動数も合わせて制限してください。

障害対応チェックリスト

  • Claude CodeとGatewayのversionを記録した
  • PostgreSQLのversionと接続先を確認した
  • 既定の5秒でcold startを測った
  • store.connect_timeout_secondsの変更理由と期限を書いた
  • 再試行回数、backoff、停止条件を決めた
  • URL・TLS・credentialエラーを区別した
  • DBなしで受け付ける操作と拒否する操作を決めた
  • 復旧後のin-flightと新規requestを確認した

接続が復旧しただけで完了にしないでください。停止中に失敗したlogin、作成されなかったaudit、重複したretry、超過したrate-limitがないかを照合します。DBへ接続できなかった時間、影響したrequest、担当者の判断、設定を戻したかをインシデント記録へ残すと、次回のtimeout設計を改善できます。

よくある質問

5秒は必ず変更すべきですか?

変更必須ではありません。まず5秒を基準に実測し、DBの通常起動時間、orchestrator、SLOが示す必要性がある場合だけ延長します。

Postgres URLをログに出してよいですか?

接続先の情報が内部構成やcredentialを含む場合があります。公式のエラー手掛かりを使いつつ、パスワードやtokenはマスキングし、閲覧権限を限定してください。

DB障害時にupstreamへ直接fallbackできますか?

認証・rate limit・auditの保存要件を回避するため、安易なfallbackは危険です。データ整合性と責任者の承認を確認した上で、限定的なread-only経路にします。

公式情報

次の一歩

Gatewayのtimeoutだけでなく、認証、監査、費用、停止責任までつながっていない場合は、障害時の判断が属人化します。Miraigentの無料診断で、構成と復旧手順を業務単位で棚卸しできます。