502 Bad Gateway 表示作为网关或代理的服务没有从上游获得有效响应。stream disconnected 则说明连接已经开始,但流式响应在完整结束前中断。两者可能相关,但不能只凭错误文字判断是模型、网关、网络还是客户端超时。
用四组对照快速缩小范围
保持同一个 Key 和模型,只改变一个变量:
| 对照 | A | B | 能说明什么 |
|---|---|---|---|
| 输入长度 | 20 字短问题 | 真实长上下文 | 只在长输入失败,优先查上下文与超时 |
| 流式模式 | stream: false |
stream: true |
只在流式失败,优先查 SSE 和代理缓冲 |
| 客户端 | curl / SDK | Cursor、Dify 或 Agent | 只有客户端失败,查客户端超时和解析 |
| 任务类型 | 普通文本 | 工具调用或多轮 Agent | 只有复杂任务失败,查轮次、工具和总时长 |
每组至少重复 3 次,并记录时间、状态码、请求 ID 与中断位置。一次成功或失败不足以证明长期状态。
先跑非流式短请求
curl -i https://www.aifast.club/v1/chat/completions \
-H "Authorization: Bearer $AIFAST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "从控制台复制的模型ID",
"messages": [{"role": "user", "content": "只回复 ok"}],
"stream": false
}'
- 短请求也稳定 502:保存请求 ID 和时间,检查平台或上游状态;
- 短请求成功、长请求失败:逐步缩短上下文并增加读取超时;
- 非流式成功、流式失败:进入 SSE 检查;
- curl 成功、应用失败:检查客户端、代理和 SDK 配置。
检查 SSE 流是否完整
使用 -N 禁用 curl 输出缓冲:
curl -N https://www.aifast.club/v1/chat/completions \
-H "Authorization: Bearer $AIFAST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "从控制台复制的模型ID",
"messages": [{"role": "user", "content": "分三点解释幂等性"}],
"stream": true
}'
重点观察:
- 是否持续收到
data:事件; - 每个事件是否为客户端可解析的 JSON;
- 是否出现正常结束标记;
- 中断前是否返回错误事件;
- 反向代理是否缓冲或压缩了流。
更完整的客户端示例和代理检查见流式输出与 SSE 接入教程。
把超时拆成三层
不要只设置一个笼统的 timeout=30:
| 超时 | 作用 | 常见误配 |
|---|---|---|
| 连接超时 | 建立 TCP/TLS 连接 | 设置过长,网络故障迟迟不失败 |
| 读取超时 | 等待下一个响应分片 | 设置过短,推理或工具阶段被误杀 |
| 任务总时限 | 限制完整业务任务 | 没有上限,Agent 可以无限运行 |
长推理和工具调用可能在两个文本分片之间等待更久,但这不意味着总时限应该无限增加。应分别设置合理的读取超时与业务截止时间。
反向代理重点检查
如果应用前还有 Nginx、Cloudflare、Lucky 或其他代理,核对:
- 是否关闭了不适合 SSE 的响应缓冲;
- 上游读取超时是否短于客户端;
- 是否完整转发
Authorization和Content-Type; - 响应是否被错误压缩、拼接或缓存;
- 长连接是否被空闲超时提前关闭;
- 请求体大小限制是否小于真实上下文。
不要一开始就同时放大所有超时和请求体限制。先通过短请求、长请求和流式对照确认是哪一层触发。
502 应该怎么重试
只对可以安全重复的请求做有限重试,并加入抖动。以下情况要特别谨慎:
- 生图、视频等异步任务可能已经创建成功;
- 工具调用可能已经写入数据库或发送消息;
- 流式请求中断前已经向用户输出部分内容;
- 服务端已扣费但客户端没有收到完整响应。
对有副作用的任务,应使用幂等键、任务 ID 或业务去重机制。无法判断服务端是否执行时,不要直接重新发起。
修复完成的验收标准
- 短请求、真实上下文分别完成多次验证;
- 非流式与流式均能正常结束;
- 日志保留请求 ID、中断时间、首个分片和最后一个分片时间;
- 连接、读取和任务总时限职责清楚;
- 代理不会缓冲 SSE 或提前关闭长连接;
- 重试次数有限,有副作用任务具备去重机制。
如果同一入口持续出现异常,可以先运行模型质量检测保存协议与行为报告,再按API 对比测试模板从相同地区、模型和题集复测。检测报告用于定位兼容性问题,不等同于厂商身份认证或长期 SLA。