メインコンテンツへスキップ

概要

このガイドでは、一般的な設定の問題、診断方法、および実績のある解決策について説明します。

クイック診断

環境変数の確認

設定ファイルの検証

サービスの健康状態を確認

一般的な問題

1. サービスが起動しない

環境変数が不足している

症状:
  • サービスが即座にクラッシュする
  • ログに「variable not set」エラーが表示される
  • コンテナがコード1で終了する
診断:
解決策:
必要な変数:
  • 少なくとも1つのLLMプロバイダーキー (OPENAI_API_KEY, ANTHROPIC_API_KEYなど)
  • データベースの資格情報 (POSTGRES_*)
  • Redis接続 (REDIS_*)

無効な設定構文

症状:
  • 「Failed to parse config」エラー
  • YAML構文エラー
  • サービスが起動しない
診断:
解決策:

2. 認証失敗

ゲートウェイが401 Unauthorizedを返す

症状:
  • すべてのリクエストが401を返す
  • 「Unauthorized」エラー
  • APIキーが拒否される
診断:
解決策1: 開発用に認証を無効にする
解決策2: 有効なAPIキーを使用

JWTシークレットが設定されていない

症状:
  • 「JWT secret not configured」エラー
  • 認証ミドルウェアが失敗する
解決策:

3. データベース接続の問題

PostgreSQLに接続できない

症状:
  • 「connection refused」エラー
  • 「dial tcp: connect: connection refused」
  • サービスが起動時にクラッシュする
診断:
解決策1: PostgreSQLが起動していない
解決策2: 誤った資格情報
解決策3: ポートの競合

データベーススキーマが初期化されていない

症状:
  • 「table does not exist」エラー
  • 「column not found」エラー
  • ログにSQLエラーが表示される
解決策:

4. Redis接続の問題

Redisに接続できない

症状:
  • Redisへの「connection refused」
  • セッション状態が持続しない
  • キャッシュミス
診断:
解決策:

Redis 認証失敗

症状:
  • “NOAUTH Authentication required”
  • 接続は成功するがコマンドが失敗する
解決策:

5. LLM プロバイダーの問題

API キーが無効または期限切れ

症状:
  • “Invalid API key” エラー
  • LLM プロバイダーからの 401
  • タスクが即座に失敗する
診断:
解決策:

レート制限超過

症状:
  • LLM プロバイダーからの 429 エラー
  • ログに “Rate limit exceeded”
  • タスクがタイムアウトまたは失敗する
解決策 1: レート制限のリセットを待つ
解決策 2: レート制限を設定
解決策 3: 複数のプロバイダーを使用

クォータ超過

症状:
  • “insufficient_quota” エラー
  • “You exceeded your current quota”
  • すべての LLM 呼び出しが失敗する
解決策:

6. モデル設定の問題

モデルが見つからない

症状:
  • “model not found” エラー
  • “invalid model” エラー
  • モデルエラーでタスクが失敗する
診断:
解決策:

7. 予算とコストの問題

タスクが予算を超過

症状:
  • “Budget exceeded” エラー
  • コストエラーでタスクが失敗する
  • MAX_COST_PER_REQUEST を超過
解決策:

予算の強制が機能していない

症状:
  • コストが制限を超過
  • 予算エラーがない
診断:
解決策:

8. パフォーマンスの問題

タスク実行が遅い

症状:
  • タスクが予想の 2-3 倍の時間がかかる
  • 高いレイテンシ
  • タイムアウト
診断:
解決策 1: 並列性を増加
解決策 2: キャッシングを有効にする
解決策 3: モデル選択を最適化

高いメモリ使用量

症状:
  • OOM エラー
  • コンテナの再起動
  • 高いスワップ使用
診断:
解決策:

9. ストリーミングの問題

SSE接続の切断

症状:
  • SSEストリームが切断される
  • タスクの途中でイベントが停止する
  • “Connection closed” エラー
解決策 1: タイムアウトを増加させる
解決策 2: 再接続を処理する

イベントが受信されない

症状:
  • ストリームにイベントがない
  • 空のSSEレスポンス
  • ストリームは接続されるがデータがない
診断:
解決策:

10. ツール実行の問題

Pythonコードの実行失敗

症状:
  • “WASI interpreter not found”
  • Pythonコードツールが失敗する
  • サンドボックスエラー
解決策:

ツールタイムアウト

症状:
  • “Tool execution timeout” エラー
  • ツールが無限にハングする
  • WASIタイムアウトエラー
解決策:

設定の検証

すべての設定を検証

ベストプラクティス

1. 環境ごとの設定を使用

2. カスタム設定を文書化

3. バージョン管理

4. 定期的な検証

5. 設定の監視

クイックフィックスチェックリスト

問題が発生した場合、次の手順を順に試してください:
  • すべてのサービスを再起動: docker compose restart
  • ログを確認: docker compose logs --tail=50
  • .envファイルが存在し、必要な変数が設定されているか確認
  • データベース接続をテスト: docker compose exec postgres pg_isready
  • Redisをテスト: docker compose exec redis redis-cli ping
  • 少なくとも1つのLLM APIキーが設定されているか確認
  • ディスクスペースを確認: df -h
  • メモリを確認: docker stats
  • 完全リセット(最終手段): docker compose down -v && docker compose up -d

ヘルプを得る

問題が解決しない場合:
  1. ログを収集:
  2. 設定をエクスポート:
  3. GitHubの問題を確認: https://github.com/Kocoro-lab/Shannon/issues

関連ドキュメント

環境変数

変数の完全なリファレンス

Docker Compose

Docker デプロイメントガイド

トラブルシューティング

一般的なトラブルシューティング

パフォーマンス調整

パフォーマンス最適化