# gRPC 错误：DEADLINE_EXCEEDED：等待流响应超时

- **ID:** `api/grpc-deadline-exceeded-streaming`
- **领域:** api
- **类别:** runtime_error
- **错误码:** `DEADLINE_EXCEEDED`
- **验证级别:** ai_generated
- **修复率:** 82%

## 根因

客户端设置的截止时间（超时）在服务器完成发送所有流消息之前到期，通常由于长时间流上的慢处理或网络延迟。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| gRPC 1.58 | active | — | — |
| gRPC-Go 1.60 | active | — | — |
| gRPC-Java 1.61 | active | — | — |
| Envoy 1.28 | active | — | — |

## 解决方案

1. ```
   为每个 RPC 设置与预期流持续时间匹配的截止时间。对于服务器流式 RPC，使用较长的截止时间（例如 60 秒）并实现 keepalive ping 以检测死连接。
   ```
2. ```
   在服务器端实现带有背压的流式传输：使用流量控制防止服务器发送速度超过客户端消费速度，减少因缓冲导致截止时间超时的风险。
   ```

## 无效尝试

- **** — Unbounded timeouts mask underlying performance issues and may cause resource leaks; the correct fix is per-stream or per-RPC tuning, not a global increase. (75% 失败率)
- **** — This removes timeout protection, leading to hung connections and resource exhaustion; gRPC requires deadlines for reliability. (90% 失败率)
