故障排除
这些检查适用于 AISIX OSS,以及连接 AISIX Enterprise 或 AISIX Cloud 的网关。修改资源前,请先将 AISIX 故障范围缩小到启动、配置、调用方策略、模型服务提供方路径或控制 面投射。请按顺序执行检查,直到明确失败层级,再根据对应章节决定下一步操作。
快速排查
修改配置前,请先从运行时路径开始检查。
先检查监听器健康状态:
curl -i "http://127.0.0.1:3000/livez"
这里连接被拒绝本身就是一个信号,而不是命令执行失败。使用 etcd 或控制面作为资源来源时,网关在应用第一个配置之前不会绑定代理监听器,因此从未连上该来源的实例根本没有代理端口可以响应。只有配置来源能无限期造成这种状态。无法连接 ratelimit.redis 或 cache.redis 时,有界的启动连接尝试期间可能延迟所有监听器;尝试结束后,Redis 不再阻止启动,受影响的子系统进入降级模式,但代理监听器仍须获得有效配置。参见网关正在运行,但代理端口拒绝连接。
启用 Prometheus 指标时,请在私有指标/状态监听器上检查最新观察到和已应用的配置。代理监听器等待第一个配置时,该监听器通常仍然可用:
curl -sSi "http://127.0.0.1:9090/status/ready"
curl -sS "http://127.0.0.1:9090/status/config"
使用应用实际使用的同一个调用方 API Key 验证模型发现:
AISIX_API_KEY="YOUR_CALLER_API_KEY"
curl -sS "http://127.0.0.1:3000/v1/models" \
-H "Authorization: Bearer ${AISIX_API_KEY}"
然后向失败端点发送一次真实请求。例如,使用调用方 API Key 检查 OpenAI 兼容聊天路径:
curl -sS "http://127.0.0.1:3000/v1/chat/completions" \
-H "Authorization: Bearer ${AISIX_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{
"role": "user",
"content": "Say hello."
}
]
}'
根据响应状态、错误类型和关联响应头选择下一步检查。
| 信号 | 下一步检查 |
|---|---|
| 监听器健康检查被拒绝而不是返回响应。 | 网关是否应用过任何配置:先看指标/状态监听器上的 /status/ready,再看配置来源。 |
| 监听器健康检查失败。 | 进程、监听器绑定、启动配置和 TLS。 |
配置状态为 degraded 或 out_of_sync。 | 被拒绝的资源、最近一次加载失败和配置来源。 |
| 配置状态没有反映预期的直接 etcd 变更。 | etcd 可达性、监听的前缀和配置来源状态。 |
| 模型发现没有显示预期别名。 | 调用方 API Key 访问权限、模型类型和配置可见性。 |
| 真实代理请求在分发到上游前失败。 | 调用方身份认证、模型访问、安全护栏、限流或预算。 |
| 真实代理请求到达模型服务提供方后失败。 | 模型服务提供方密钥、base URL、上游模型 ID、配额、服务故障或出站网络路径。 |
请求关联请使用 x-aisix-request-id,AISIX 会将其添加到各端点类型的代理响应中。x-aisix-served-by、x-aisix-cache 等路由与缓存响应头只有在网关将 proxy.expose_debug_headers 设为 true 时才会发送;无论是否开启,访问日志都会记录同样的信息。精确响应头范围请参阅响应头与错误码。