V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
macscsbf
V2EX  ›  程序员

大佬们,问个问题

  •  
  •   macscsbf · 2022-12-27 09:47:59 +08:00 · 3632 次点击
    这是一个创建于 695 天前的主题,其中的信息可能已经有所发展或是发生改变。
    线上 k8s 有个 websocket 服务端的 pod ,外面用 nginx 做代理。
    平常大概几万个客户端与服务端保持连接,然后每次重启以后客户端会重新连接到这个服务端。
    但是我发现每次重启以后,客户端重新连接时常会出现客户端连接超时的问题,经排查看到 nginx 经常出现 upstream timeout 的问题。想问下这个问题怎么解决
    18 条回复    2022-12-27 17:57:24 +08:00
    opengps
        1
    opengps  
       2022-12-27 10:06:57 +08:00
    几万个,有没有超 65535 ?用了 nginx 的连接转发,意味着不再是直接承载外部连接,而是内部多一层占用,这个占用的连接数是受限制的。
    macscsbf
        2
    macscsbf  
    OP
       2022-12-27 10:12:37 +08:00
    @opengps 没有超过,2w 多吧,这个是会有 65535 的限制吗
    opengps
        3
    opengps  
       2022-12-27 10:39:14 +08:00
    @macscsbf 两个方向:
    1 ,单个进程发起的连接数可能有限制
    2 ,重启本身,外部有大量连接需要瞬间建立,这个过程本身就很费资源,如果没有连接池等方案去优化的话,出现超时属于正常现象
    macscsbf
        4
    macscsbf  
    OP
       2022-12-27 10:45:56 +08:00
    @opengps 忘了说了,重启下 nginx 就恢复正常了。主要是这算是服务内部的问题,还是 nginx 我哪里配置上有什么问题呢
    zpfhbyx
        5
    zpfhbyx  
       2022-12-27 11:19:42 +08:00
    都上 k8s 了..为啥不滚动升级..
    macscsbf
        6
    macscsbf  
    OP
       2022-12-27 11:32:38 +08:00
    @zpfhbyx 重启是服务崩了。。这是个老项目,没什么升级的需求
    iisky1121
        7
    iisky1121  
       2022-12-27 11:43:39 +08:00
    主要是客户端和 nginx 保持长连接,nginx 和服务端保持连接,你断开的是服务端和 nginx ,但是客户端和 nginx 并没有断开,所以触发超时
    iisky1121
        8
    iisky1121  
       2022-12-27 11:47:04 +08:00
    这里面服务端和 nginx 中间应该是通过 lb 或者 service ,问题在这里面
    macscsbf
        9
    macscsbf  
    OP
       2022-12-27 12:02:15 +08:00
    @iisky1121 这确实应该是这样的,但是 upstream timeout 对应的应该是我上游的服务端吧,意思是客户端请求 nginx 请求 pod 的超时是吗?用的是 service
    defunct9
        11
    defunct9  
       2022-12-27 13:14:29 +08:00
    开 k9s ,让我上去看看
    whoosy
        12
    whoosy  
       2022-12-27 15:43:55 +08:00
    nginx upstream 有缓存,转发到了 pod 之前的地址上去了,重启 nginx 会生效
    macscsbf
        13
    macscsbf  
    OP
       2022-12-27 15:51:24 +08:00
    @whoosy 我填写的地址是 service 的 ip,因为 pod ip 是一直在变的
    macscsbf
        14
    macscsbf  
    OP
       2022-12-27 15:56:30 +08:00
    @defunct9 我没这个权限。所以问的可能也不是那么清楚
    WeSoniC
        15
    WeSoniC  
       2022-12-27 16:53:37 +08:00
    服务的 service 是什么类型? nginx 是在集群内还是在集群外?我之前踩过坑,nginx 的反代如果你上游地址用的是域名,默认是不会自动刷新的,只有第一次启动会解析,关键字 nginx resolver 。
    macscsbf
        16
    macscsbf  
    OP
       2022-12-27 16:58:55 +08:00
    @WeSoniC nginx 是在集群外部的,service 是 ClusterIp
    securityCoding
        17
    securityCoding  
       2022-12-27 17:38:11 +08:00
    k8s 流量没切完 ,pod 停止脚本做一下 sleep 吧
    webcape233
        18
    webcape233  
       2022-12-27 17:57:24 +08:00 via iPhone
    帖子题目不描述问题....
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2003 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:14 · PVG 00:14 · LAX 08:14 · JFK 11:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.