V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
EndlessJY
V2EX  ›  程序员

[有偿求助] 频繁出现 499 状态码 求运维大佬!

  •  
  •   EndlessJY · 31 天前 · 2567 次点击

    环境说明: 使用的 GoEdge ,源服务是 Docker 搭建 Emby ,使用 Nginx 反代 CDN 、源主机资源占用不到 10%

    问题说明: 频繁出现 499 状态码,导致客户端断开链接 不限于某一个接口,所有 CDN 线路均会出现,没有规则。 客户端是市面比较热门的播放器:Infuse 、Senplayer 、Yamby 基本可以排除手动断开连接的可能

    问题解决送 Emby 年卡或 500 米 作为报酬;私信联系我即可! 如果你仅限于简单网站搭建 没有深入了解相关配置的经验 请不要打扰 谢谢! image image image image

    18 条回复    2025-02-24 21:30:40 +08:00
    JingKeWu
        1
    JingKeWu  
       31 天前
    GoEdge 499 无法解决
    EndlessJY
        2
    EndlessJY  
    OP
       31 天前
    @JingKeWu 怎么说? GoEdge 有 499 的毛病嘛?或许,有可能是宿主机的问题不,因为所有节点都会报 499 ,并非某一个
    JingKeWu
        3
    JingKeWu  
       31 天前
    我们以前也是出现 和作者沟通也解决不了
    defunct9
        4
    defunct9  
       31 天前
    去官方看了一下文档:
    499 是什么错误?
    客户端在发送请求过程中取消请求的时候,会记录一个 499 。

    貌似去官方问问好了
    drymonfidelia
        5
    drymonfidelia  
       31 天前
    把 HTTP2 关了试下,以前出过这个问题,强制 HTTP1.1 就莫名其妙好了,不过服务不是 Emby
    jinliming2
        6
    jinliming2  
       31 天前 via iPhone
    有确认单个复现用户的日志吗?
    因为有些请求是客户端重复操作,后一个请求发起时主动中断了前一个请求,对实际用户来说可能没感知,对服务端来说就是一个请求在没来得及发响应的时候就中断了,报个异常日志。
    如果是这个情况的话,那么现象通常是出现中断异常后同一个客户端会在几毫秒内再次发起请求,请求的资源相同,参数可能相同也可能近似(取决于服务类型),出现的次数一般同一个用户不会在一秒内连续出现多次。

    回到楼主的问题,加上截图的日志,感觉像是客户端重复请求这个 Progress 接口,有点符合我说的这个特征?
    排查的话,可能针对复现的单个用户,跟踪复现时间点前后一段时间的日志,看看特征。
    s270987763
        7
    s270987763  
       31 天前
    先了解 499 原因 ,检查后端服务吧。第一次还未能响应,第二次重试了。当后端返回数据发现前连接没有了,响应码 499
    lifei6671
        8
    lifei6671  
       31 天前
    499 出现是因为客户端主动断开,一般有两种情况一种是客户端真的自动断开了。还有一种是因为配置的超时时间过短,你的后端程序没有在指定的时间内返回,客户端会因为超时导致断开,此时也会出现 449 。你这个是 CDN 的话可以检查下超时时间配置的是否合理。
    chen05
        9
    chen05  
       31 天前   ❤️ 1
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    remote_add 看起来恒定为 cdn 的 ip,那么肯定限流,限流后就请求变慢,超过 cdn 的 request_timeout 就断开,你再返回就 499

    如果 cdn 量大的话 会被限流,然后就 499 吧?

    $binary_remote_addr 你要设置为 cdn 透传的 header 对应 remote_addr 头
    $http_x_forwarded_for
    chen05
        10
    chen05  
       31 天前   ❤️ 1
    你本地不需要限流,,限流在 cdn 那边限流吧
    wangbin11
        11
    wangbin11  
       31 天前
    @chen05 你是大佬啊,非常仰慕,让我加个电报好友吧(和作者无关,后续我们也会使用 cdn 想学习一下啊)
    snuglove
        12
    snuglove  
       31 天前
    499 不是限流状态码吗。。
    coolloves
        13
    coolloves  
       31 天前
    499 客户端不等你响应就主动断开
    要么是你太慢,要么是客户太着急
    yc8332
        14
    yc8332  
       31 天前
    这种不是有人攻击就是你的请求响应太长了,web 服务器那边等待时间太短就给关了连接。
    good758
        15
    good758  
       31 天前
    我是运维大佬,我可以。
    crayabel
        16
    crayabel  
       31 天前
    分析下 nginx 代理服务器本身操作系统的问题,网络上的端口耗尽、tcp 半连接过多等,什么 ulimit 限制等,看看操作系统日志和 nginx error 日志有没有什么信息
    supty
        17
    supty  
       31 天前
    499 代表服务端请求还未返回时客户端主动断开连接,加参数
    proxy_ignore_client_abort on
    EndlessJY
        18
    EndlessJY  
    OP
       30 天前 via Android
    @chen05 老哥,辛苦加我下呗
    aHR0cHM6Ly90Lm1lL3p6NDIz
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5161 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 09:11 · PVG 17:11 · LAX 02:11 · JFK 05:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.