You need to enable JavaScript to run this app.
导航

长链接断开,该怎么处理?

最近更新时间2023.11.21 19:52:00

首次发布时间2023.11.21 19:52:00

问题现象

需要长链接的业务出现短暂连接中断,例如:直播、在线会议。

原因分析

  • Nginx 重启或重新加载配置时导致长链接断开。

  • Nginx Ingress Controller 缩容时,由于没有优雅退出能力,可能导致请求没处理完就退出。

解决方案

  • 针对 Nginx 重启或重新加载配置时的断开,可通过配置 worker-shutdown-timeout 来设置重新加载配置后长链接的断开时间;修改 ingress-nginx-controller 的 configmap 即可。

    kubectl edit configmap -n ingress-nginx ingress-nginx-controller
    
    apiVersion: v1
    data:
      disable-access-log: "true"
      enable-multi-accept: "true"
      enable-underscores-in-headers: "true"
      ignore-invalid-headers: "false"
      max-worker-connections: "500000"
      max-worker-open-files: "1000000"
      worker-cpu-affinity: auto
      worker-shutdown-timeout: "240"
    
  • 针对 Nginx Ingress Controller 缩容导致的长链接断开,客户端存在重试机制则可以自行恢复。