{
  "id": "grpc/http2-max-frame-size-exceeded",
  "signature": "INTERNAL: grpc: received HTTP/2 frame with size 16777216, which exceeds the configured maximum 16384",
  "signature_zh": "INTERNAL: grpc: 收到大小为 16777216 的 HTTP/2 帧，超过配置的最大值 16384",
  "regex": "INTERNAL: grpc: received HTTP/2 frame with size \\d+, which exceeds the configured maximum \\d+",
  "domain": "grpc",
  "category": "protocol_error",
  "subcategory": null,
  "root_cause": "The gRPC server or client configured a smaller HTTP/2 max frame size than the peer is sending, causing a protocol violation.",
  "root_cause_type": "generic",
  "root_cause_zh": "gRPC 服务器或客户端配置的 HTTP/2 最大帧大小小于对端发送的大小，导致协议违规。",
  "versions": [
    {
      "version": "gRPC C++ 1.62.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "gRPC Go 1.64.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "Envoy 1.30.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    }
  ],
  "os_specific": {},
  "dead_ends": [
    {
      "action": "Increase max frame size on client only to a very high value like 64MB",
      "why_fails": "The server may have its own limit; mismatch persists and can cause memory issues.",
      "fail_rate": 0.6,
      "condition": "",
      "sources": []
    },
    {
      "action": "Disable HTTP/2 frame size checks entirely via environment variable",
      "why_fails": "Not a standard gRPC option; may lead to silent data corruption.",
      "fail_rate": 0.8,
      "condition": "",
      "sources": []
    },
    {
      "action": "Restart both services without any config change hoping it's transient",
      "why_fails": "The misconfiguration persists across restarts.",
      "fail_rate": 0.9,
      "condition": "",
      "sources": []
    }
  ],
  "workarounds": [
    {
      "action": "Set `GRPC_ARG_HTTP2_MAX_FRAME_SIZE` to a larger value (e.g., 65536) on both client and server: `export GRPC_ARG_HTTP2_MAX_FRAME_SIZE=65536`",
      "success_rate": 0.85,
      "how": "Set `GRPC_ARG_HTTP2_MAX_FRAME_SIZE` to a larger value (e.g., 65536) on both client and server: `export GRPC_ARG_HTTP2_MAX_FRAME_SIZE=65536`",
      "condition": "",
      "sources": []
    },
    {
      "action": "In gRPC-Web or Envoy, configure `max_frame_size` in the HTTP connection manager: `http_filters: [name: envoy.filters.http.grpc_web]` then set `max_request_size_kb: 65536`",
      "success_rate": 0.8,
      "how": "In gRPC-Web or Envoy, configure `max_frame_size` in the HTTP connection manager: `http_filters: [name: envoy.filters.http.grpc_web]` then set `max_request_size_kb: 65536`",
      "condition": "",
      "sources": []
    }
  ],
  "workarounds_zh": [
    "将客户端和服务端的 `GRPC_ARG_HTTP2_MAX_FRAME_SIZE` 设置为更大的值（如 65536）：`export GRPC_ARG_HTTP2_MAX_FRAME_SIZE=65536`",
    "在 gRPC-Web 或 Envoy 的 HTTP 连接管理器中配置 `max_frame_size`：`http_filters: [name: envoy.filters.http.grpc_web]` 然后设置 `max_request_size_kb: 65536`"
  ],
  "transition_graph": {
    "leads_to": [],
    "preceded_by": [],
    "frequently_confused_with": []
  },
  "official_doc_url": "https://grpc.io/docs/guides/performance/#http2-settings",
  "official_doc_section": null,
  "error_code": null,
  "verification_tier": "ai_generated",
  "confidence": 0.88,
  "fix_success_rate": 0.85,
  "resolvable": "true",
  "first_seen": "2024-03-15",
  "last_confirmed": "2024-06-01",
  "last_updated": "2024-06-01",
  "evidence_count": 1,
  "tags": [],
  "locale": "en",
  "aliases": []
}