EDEADLINE grpc runtime_error ai_generated true

DEADLINE_EXCEEDED: grpc: deadline exceeded after 100ms while waiting for server to respond

ID: grpc/grpc-deadline-too-short

Also available as: JSON · Markdown · 中文
90%Fix Rate
86%Confidence
1Evidence
2024-04-12First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
gRPC v1.62.0 active
gRPC v1.59.0 active
gRPC v1.55.0 active
Python gRPC v1.60.0 active

Root Cause

The client's configured RPC deadline (timeout) is too short for the server's processing time, causing premature cancellation.

generic

中文

客户端配置的 RPC 截止时间(超时)相对于服务器的处理时间太短,导致过早取消。

Official Documentation

https://grpc.io/docs/guides/deadlines/

Workarounds

  1. 92% success Increase the client-side deadline to a reasonable value, e.g., from 100ms to 5000ms, using `withDeadlineAfter(5000, TimeUnit.MILLISECONDS)` in Java or `timeout=5` in Python.
    Increase the client-side deadline to a reasonable value, e.g., from 100ms to 5000ms, using `withDeadlineAfter(5000, TimeUnit.MILLISECONDS)` in Java or `timeout=5` in Python.
  2. 80% success Profile server-side latency and optimize slow endpoints (e.g., add caching, async processing) to reduce response time below the deadline.
    Profile server-side latency and optimize slow endpoints (e.g., add caching, async processing) to reduce response time below the deadline.

中文步骤

  1. 将客户端截止时间增加到合理值,例如从 100 毫秒增加到 5000 毫秒,Java 中使用 `withDeadlineAfter(5000, TimeUnit.MILLISECONDS)`,Python 中使用 `timeout=5`。
  2. 分析服务器端延迟并优化慢速端点(例如添加缓存、异步处理),以将响应时间降低到截止时间以下。

Dead Ends

Common approaches that don't work:

  1. Increasing server timeout setting (e.g., grpc-timeout header) 75% fail

    The deadline is client-side; server ignores client deadline if it's not propagated.

  2. Disabling deadline entirely on the client 70% fail

    gRPC requires a default deadline; setting to infinite can cause resource leaks.