# gRPC error: DEADLINE_EXCEEDED — server too busy to respond within deadline

- **ID:** `api/grpc-deadline-exceeded-server-busy`
- **Domain:** api
- **Category:** runtime_error
- **Error Code:** `DEADLINE_EXCEEDED`
- **Verification:** ai_generated
- **Fix Rate:** 85%

## Root Cause

The gRPC server failed to process the request within the client-specified deadline due to high load, resource contention, or a slow downstream dependency.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| gRPC 1.60+ | active | — | — |
| gRPC-Go 1.60+ | active | — | — |
| gRPC-Python 1.60+ | active | — | — |

## Workarounds

1. **Implement client-side retries with exponential backoff and jitter. Example gRPC-Go: `grpc.WithDefaultCallOptions(grpc.MaxRetryAttempts(3), grpc.WithBackoff(grpc.DefaultBackoffConfig))`.** (85% success)
   ```
   Implement client-side retries with exponential backoff and jitter. Example gRPC-Go: `grpc.WithDefaultCallOptions(grpc.MaxRetryAttempts(3), grpc.WithBackoff(grpc.DefaultBackoffConfig))`.
   ```
2. **Scale up the gRPC server by adding more instances or increasing resources (CPU/memory). Monitor server metrics (e.g., `grpc_server_requests_in_flight`).** (90% success)
   ```
   Scale up the gRPC server by adding more instances or increasing resources (CPU/memory). Monitor server metrics (e.g., `grpc_server_requests_in_flight`).
   ```
3. **Reduce the request complexity or implement server-side rate limiting to prevent overload. Example: use `grpc.MaxConcurrentStreams` in server config.** (80% success)
   ```
   Reduce the request complexity or implement server-side rate limiting to prevent overload. Example: use `grpc.MaxConcurrentStreams` in server config.
   ```

## Dead Ends

- **** — If the server is overloaded, a longer deadline just delays the timeout; the request may still fail or degrade other requests. (80% fail)
- **** — The server is still busy; immediate retries worsen load and likely fail again. (90% fail)
- **** — The error is a server-side timeout, not a connection failure; network is likely fine. (60% fail)
