V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
macscsbf
V2EX  ›  程序员

大佬们,问个问题

  •  
  •   macscsbf · Dec 27, 2022 · 4600 views
    This topic created in 1218 days ago, the information mentioned may be changed or developed.
    线上 k8s 有个 websocket 服务端的 pod ,外面用 nginx 做代理。
    平常大概几万个客户端与服务端保持连接,然后每次重启以后客户端会重新连接到这个服务端。
    但是我发现每次重启以后,客户端重新连接时常会出现客户端连接超时的问题,经排查看到 nginx 经常出现 upstream timeout 的问题。想问下这个问题怎么解决
    18 replies    2022-12-27 17:57:24 +08:00
    opengps
        1
    opengps  
       Dec 27, 2022
    几万个,有没有超 65535 ?用了 nginx 的连接转发,意味着不再是直接承载外部连接,而是内部多一层占用,这个占用的连接数是受限制的。
    macscsbf
        2
    macscsbf  
    OP
       Dec 27, 2022
    @opengps 没有超过,2w 多吧,这个是会有 65535 的限制吗
    opengps
        3
    opengps  
       Dec 27, 2022
    @macscsbf 两个方向:
    1 ,单个进程发起的连接数可能有限制
    2 ,重启本身,外部有大量连接需要瞬间建立,这个过程本身就很费资源,如果没有连接池等方案去优化的话,出现超时属于正常现象
    macscsbf
        4
    macscsbf  
    OP
       Dec 27, 2022
    @opengps 忘了说了,重启下 nginx 就恢复正常了。主要是这算是服务内部的问题,还是 nginx 我哪里配置上有什么问题呢
    justseemore
        5
    justseemore  
       Dec 27, 2022
    都上 k8s 了..为啥不滚动升级..
    macscsbf
        6
    macscsbf  
    OP
       Dec 27, 2022
    @zpfhbyx 重启是服务崩了。。这是个老项目,没什么升级的需求
    iisky1121
        7
    iisky1121  
       Dec 27, 2022
    主要是客户端和 nginx 保持长连接,nginx 和服务端保持连接,你断开的是服务端和 nginx ,但是客户端和 nginx 并没有断开,所以触发超时
    iisky1121
        8
    iisky1121  
       Dec 27, 2022
    这里面服务端和 nginx 中间应该是通过 lb 或者 service ,问题在这里面
    macscsbf
        9
    macscsbf  
    OP
       Dec 27, 2022
    @iisky1121 这确实应该是这样的,但是 upstream timeout 对应的应该是我上游的服务端吧,意思是客户端请求 nginx 请求 pod 的超时是吗?用的是 service
    defunct9
        11
    defunct9  
       Dec 27, 2022
    开 k9s ,让我上去看看
    whoosy
        12
    whoosy  
       Dec 27, 2022
    nginx upstream 有缓存,转发到了 pod 之前的地址上去了,重启 nginx 会生效
    macscsbf
        13
    macscsbf  
    OP
       Dec 27, 2022
    @whoosy 我填写的地址是 service 的 ip,因为 pod ip 是一直在变的
    macscsbf
        14
    macscsbf  
    OP
       Dec 27, 2022
    @defunct9 我没这个权限。所以问的可能也不是那么清楚
    WeSoniC
        15
    WeSoniC  
       Dec 27, 2022
    服务的 service 是什么类型? nginx 是在集群内还是在集群外?我之前踩过坑,nginx 的反代如果你上游地址用的是域名,默认是不会自动刷新的,只有第一次启动会解析,关键字 nginx resolver 。
    macscsbf
        16
    macscsbf  
    OP
       Dec 27, 2022
    @WeSoniC nginx 是在集群外部的,service 是 ClusterIp
    securityCoding
        17
    securityCoding  
       Dec 27, 2022
    k8s 流量没切完 ,pod 停止脚本做一下 sleep 吧
    webcape233
        18
    webcape233  
       Dec 27, 2022 via iPhone
    帖子题目不描述问题....
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3589 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 11:01 · PVG 19:01 · LAX 04:01 · JFK 07:01
    ♥ Do have faith in what you're doing.