Websocket 实施后 Varnish 每隔 1-3 天就会挂起

Websocket 实施后 Varnish 每隔 1-3 天就会挂起

在实施 varnish -> nginx -> nodejs websocket 管道后(之前我们一直使用 iptables 进行端口转发),我们开始每 1-3 天遇到一次 varnish 冻结。检查我们的一些日志,我找不到任何错误,但我确实注意到内存变得非常高。然而,在 websocket 配置更改之前,内存被允许变得高得多。起初,我以为 varnish 只是用完了可用的连接,所以我将最大线程数增加到 5000。

我们从 iptables 切换到这个新管道的原因是为了在 HTTP 级别启用 URL 路由并将客户端 IP 转发到我们的后端。

我在 Google 上搜索了很久,但找到的都是关于为什么 varnish 不会耗尽内存的热情洋溢的文章,而不是耗尽内存时该怎么做...有人能帮忙吗?不管怎么说,我们有 80G 左右的 RAM,所以容量不是问题。

答案1

事实证明,在身份验证失败后,我们的 Websocket 无法在客户端正确关闭。它会每 10 秒重试一次,这导致问题扩大。也许 Varnish 做了正确的事情,让僵尸连接保持活动状态,假设关闭浏览器确实会切断连接。

相关内容