{
  "id": "grpc/max-retry-attempts-exceeded-with-backoff",
  "signature": "RESOURCE_EXHAUSTED: grpc: max retry attempts (3) exceeded with exponential backoff for method /Service/Call",
  "signature_zh": "资源耗尽：gRPC：方法 /Service/Call 的最大重试次数（3）已超过，使用指数退避",
  "regex": "RESOURCE_EXHAUSTED: grpc: max retry attempts \\(\\d+\\) exceeded with exponential backoff for method /\\S+/\\S+",
  "domain": "grpc",
  "category": "resource_error",
  "subcategory": null,
  "root_cause": "The gRPC client's retry mechanism exhausted its configured maximum retry attempts (e.g., 3) due to persistent transient failures on the server, such as high latency or intermittent unavailability.",
  "root_cause_type": "generic",
  "root_cause_zh": "gRPC 客户端的重试机制因服务器持续出现瞬时故障（如高延迟或间歇性不可用）而耗尽配置的最大重试次数（例如 3 次）。",
  "versions": [
    {
      "version": "gRPC v1.50.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "gRPC v1.60.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "gRPC v1.64.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    }
  ],
  "os_specific": {},
  "dead_ends": [
    {
      "action": "",
      "why_fails": "Simply increasing the max retry count in the config (e.g., to 10) may delay failure but does not address the server-side issue causing failures.",
      "fail_rate": 0.7,
      "condition": "",
      "sources": []
    },
    {
      "action": "",
      "why_fails": "Disabling retries entirely will cause immediate failures on transient errors, worsening user experience.",
      "fail_rate": 0.6,
      "condition": "",
      "sources": []
    },
    {
      "action": "",
      "why_fails": "Changing the backoff strategy to a linear one without server fixes still results in retries hitting the same limit.",
      "fail_rate": 0.8,
      "condition": "",
      "sources": []
    }
  ],
  "workarounds": [
    {
      "action": "Increase the max retry attempts and adjust backoff parameters in the client config: `retryPolicy: { maxAttempts: 5, initialBackoff: 0.1s, maxBackoff: 10s }`",
      "success_rate": 0.75,
      "how": "Increase the max retry attempts and adjust backoff parameters in the client config: `retryPolicy: { maxAttempts: 5, initialBackoff: 0.1s, maxBackoff: 10s }`",
      "condition": "",
      "sources": []
    },
    {
      "action": "Add circuit breaker logic to skip retries after a threshold to reduce load: use `grpc.retry_buffer_size` to limit pending retries.",
      "success_rate": 0.7,
      "how": "Add circuit breaker logic to skip retries after a threshold to reduce load: use `grpc.retry_buffer_size` to limit pending retries.",
      "condition": "",
      "sources": []
    },
    {
      "action": "Investigate server logs for errors like 'UNAVAILABLE' or 'DEADLINE_EXCEEDED' and fix the root cause (e.g., scale server replicas or optimize DB queries).",
      "success_rate": 0.85,
      "how": "Investigate server logs for errors like 'UNAVAILABLE' or 'DEADLINE_EXCEEDED' and fix the root cause (e.g., scale server replicas or optimize DB queries).",
      "condition": "",
      "sources": []
    }
  ],
  "workarounds_zh": [
    "在客户端配置中增加最大重试次数并调整退避参数：`retryPolicy: { maxAttempts: 5, initialBackoff: 0.1s, maxBackoff: 10s }`",
    "添加断路器逻辑以在达到阈值后跳过重试以减少负载：使用 `grpc.retry_buffer_size` 限制待处理重试。",
    "调查服务器日志中的错误（如 'UNAVAILABLE' 或 'DEADLINE_EXCEEDED'）并修复根本原因（例如扩展服务器副本或优化数据库查询）。"
  ],
  "transition_graph": {
    "leads_to": [],
    "preceded_by": [],
    "frequently_confused_with": []
  },
  "official_doc_url": "https://grpc.io/docs/guides/retry/",
  "official_doc_section": null,
  "error_code": null,
  "verification_tier": "ai_generated",
  "confidence": 0.82,
  "fix_success_rate": 0.8,
  "resolvable": "true",
  "first_seen": "2024-06-10",
  "last_confirmed": "2024-06-01",
  "last_updated": "2024-06-01",
  "evidence_count": 1,
  "tags": [],
  "locale": "en",
  "aliases": []
}