跳转到主要内容

概述

本指南涵盖常见配置问题、如何诊断以及行之有效的解决方案。

快速诊断

检查环境变量

验证配置文件

检查服务健康状态

常见问题

1. 服务无法启动

缺少环境变量

症状:
  • 服务立即崩溃
  • 日志显示 “variable not set” 错误
  • 容器以代码 1 退出
诊断:
解决方案:
必需变量:
  • 至少一个 LLM 提供商密钥 (OPENAI_API_KEY, ANTHROPIC_API_KEY 等)
  • 数据库凭据 (POSTGRES_*)
  • Redis 连接 (REDIS_*)

无效的配置语法

症状:
  • “Failed to parse config” 错误
  • YAML 语法错误
  • 服务启动失败
诊断:
解决方案:

2. 身份认证失败

Gateway 返回 401 未授权

症状:
  • 所有请求返回 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
  • 验证至少设置了一个 LLM API 密钥
  • 检查磁盘空间: df -h
  • 检查内存: docker stats
  • 完全重置 (最后手段): docker compose down -v && docker compose up -d

获取帮助

如果问题持续存在:
  1. 收集日志:
  2. 导出配置:
  3. 查看 GitHub issues: https://github.com/Kocoro-lab/Shannon/issues

相关文档

环境变量

完整变量参考

Docker Compose

Docker 部署指南

故障排除

通用故障排除

性能调优

性能优化