2014-12-02 67 views
1

我遇到了某种奇怪的清漆问题,大量的连接卡在CLOSE_WAIT状态,就像清漆未关闭连接一样。大量的连接停留在CLOSE_WAIT状态并带有清漆

这导致我认为内核正在等待清漆关闭连接,考虑到这一点,它可能是清漆中的错误或从我的角度来看内核。虽然,在深入研究清漆代码之前,我想让你们的观点发现家伙,并且知道这种症状是否可能是由其他参数引起的?

显然,如果你遇到过这个问题并有解决方案,那将会更有帮助。

FYI:

# netstat -pan|grep varnish|awk '/tcp/ {print $6}'|sort|uniq -c 
    35902 CLOSE_WAIT 
    12148 ESTABLISHED 
     3 LISTEN 
+0

这是应用程序中的一个错误。不是内核。内核正在等待应用程序关闭连接,并且已经收到来自对等体的关闭。 – EJP 2014-12-02 11:23:29

+0

@EJP除非内核不通知进程它已经接收到FIN。 – superjedi 2014-12-02 11:24:36

+1

快来吧。没有这样做的内核会导致QA失败。 *没有*会起作用。这是应用程序中的一个错误。期。 – EJP 2014-12-04 21:04:59

回答

1

您应检查其是否在客户⇄清漆侧或清漆⇄后端,也许他们会在后端侧,至少这是我的情况。

根据Connections to backend not closing

这是每个设计其实,清漆保持后端连接周围 如果他们看起来像他们可以重复使用,并且只重温他们当 尝试重用他们,所以他们可能在 清漆发现它们已被后端关闭之前持续了相当长的一段时间。

除了挂在四周的插座,它是无害的。

我也会检查你的后端是否不必要地关闭连接,keepalive(如果你能够使用它)有很大的帮助。最后,检查varnishstat -1 |grep backend的输出以查看清漆是否能够重新使用后端连接(backend_reuse),以及是否已注意到它们已关闭(backend_toolate)。值应该如此backend_reuse + backend_toolatebackend_recycle