You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Envoy本地限流请求重试配置无效问题排查求助

解决Envoy本地限流重试不生效的问题

核心问题分析

你的配置未触发重试的原因是:

  1. Envoy默认不重试本地过滤器返回的拒绝响应(比如本地限流的429),需要显式开启该功能
  2. 仅配置retry_on: envoy-ratelimited不足以触发本地限流的重试,需结合其他参数补充配置

修改后的配置

routes:
- match:
    prefix: "/app"
  route:
    host_rewrite_literal: app
    prefix_rewrite: "/"
    timeout: 15s
    cluster: app
    retry_policy:
      retry_on: envoy-ratelimited,retriable-status-codes
      num_retries: 4
      retry_local_refused_responses: true  # 关键:开启本地拒绝响应的重试
      retriable_status_codes:             # 标记429为可重试状态码
      - 429
  typed_per_filter_config:
    envoy.filters.http.local_ratelimit:
      "@type": type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit
      stat_prefix: app_ratelimit
      token_bucket:
        max_tokens: 5
        tokens_per_fill: 5
        fill_interval: 5s
      filter_enabled:
        runtime_key: local_rate_limit_enabled
        default_value:
          numerator: 100
          denominator: HUNDRED
      filter_enforced:
        runtime_key: local_rate_limit_enforced
        default_value:
          numerator: 100
          denominator: HUNDRED

关键修改说明

  • retry_local_refused_responses: true:这是触发本地限流重试的核心开关,强制Envoy处理本地过滤器返回的拒绝响应
  • 扩展retry_on参数:添加retriable-status-codes并指定429,确保Envoy将本地限流返回的429状态码识别为可重试条件
  • 你的配置中已开启filter_enforced: true,这会让本地限流直接返回429而非仅标记请求,是重试触发的必要前提

额外验证步骤

  1. 检查过滤器链顺序:确保envoy.filters.http.local_ratelimit位于envoy.filters.http.router之前(默认配置通常满足,若自定义过滤器链需确认)
  2. 查看统计指标:重试触发后,cluster.app.retry.attempts、cluster.app.retry.success指标会增长;app_ratelimit.enabled、app_ratelimit.enforced可验证本地限流是否正常工作

内容的提问来源于stack exchange,提问作者Danila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 07:15:38