我正在使用 Google Compute Engine。我已经设置了部署管理器,它设置了一个防火墙,允许网络 LB 连接到 Web 服务器,Web 服务器本身将它们添加到实例组管理器,它设置了一个针对实例组管理器的自动缩放器,HTTP 运行状况检查设置将针对 Web 服务器实例执行,它将 HTTP 运行状况检查添加到后端服务并将实例组管理器添加到后端服务,它设置了一个 URL 映射,其中后端服务是它的默认服务,而 URL 映射器又被添加到 HTTP 代理,该代理由具有全局 IP 的转发规则指向。
此设置与此处描述的设置非常相似https://cloud.google.com/solutions/scalable-and-resilient-apps
现在,我似乎可以解决此设置的问题。我在 Web 服务器上运行了一个 Nginx 服务器,它响应请求,我能够创建到它的事件源连接,但恰好 1 分钟后,连接因错误 INCOMPLETE_CHUNKED_ENCODING 而关闭。如果我直接连接到其中一个 Web 服务器,则不会发生这种情况。我已将 tcp keepalive 的 sysconf 设置更改为:
net.ipv4.tcp_keepalive_time=600
net.ipv4.tcp_keepalive_intvl=15
net.ipv4.tcp_keepalive_probes=5
阅读后https://cloud.google.com/compute/docs/troubleshooting#networktraffic
我在 nginx 配置中尝试了无数的方法但似乎无法找到解决方案。
有人有任何想法或类似的问题吗?
答案1
亚历克斯分享该帖子链接是正确的,因为它指向了主要问题,但需要一点解释。
您需要更改 Nginx 配置文件 (/etc/nginx/nginx.conf) 中的“keepalive_timeout”值(默认值为 65),以增加 HTTP 连接超时时间,这样您的超时时间就会长于负载均衡器中的 600 秒超时时间。这会导致负载均衡器而不是 nginx 成为关闭空闲连接的一方。
调整 nginx keepalives 以与 Google Cloud Platform HTTP(S) 负载均衡器配合使用。
在 nginx 中设置“keepalive_timeout 650;”/etc/nginx/nginx.conf
keepalive_timeout 650;
keepalive_requests 10000;
更多详细信息http 持久性。
答案2
您nginx
可能需要一些调整。