Haproxy 中有很多 FIN_WAIT2、CLOSE_WAIT、LAST_ACK 和 TIME_WAIT

Tux*_*Tux 5 performance-tuning haproxy

我们正在为大约 10k+ 并发用户在生产中运行 haproxy。但是我们在 netstat 输出中看到了很多 FIN_WAIT2、CLOSE_WAIT、LAST_ACK 和 TIME_WAIT。此输出位于 8G ubuntu-12.04 节点上。

   8046 CLOSE_WAIT  
      1 CLOSING  
      1 established)  
  40869 ESTABLISHED  
   1212 FIN_WAIT1  
   7575 FIN_WAIT2  
      1 Foreign  
   2252 LAST_ACK  
      7 LISTEN  
    143 SYN_RECV  
   4920 TIME_WAIT  
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我需要做什么调整吗?
请注意,所有这些连接都是持久连接。

tcp_fin_timeout = 30  
tcp_keepalive_time = 1800
Run Code Online (Sandbox Code Playgroud)

现在,该应用程序运行良好。但是想知道当我们向这个 haproxy 节点添加更多用户时会不会有任何问题。

Hen*_*nes 8

您在第一段中列出的连接要么已建立,要么在使用后正在清理。成立的意思就是这个名字所暗示的。在您的用户之一和 HAProxy 之间建立了连接。按预期使用。

您在第一段中提到的其他状态都表示先前建立的连接已完成数据传输。我能解释的最好方法是用图表。

TCP/IP 套接字关闭图

简而言之:如果您有很多 FIN_WAIT 1 和 FIN_WAIT 2,那么服务器就没有问题。您只是在等待客户完成。

由于这不是服务器的问题,因此在达到内核网络限制之前,添加更多用户应该不是问题。你没有发布那些是什么,所以我不能评论你与他们有多接近。

  • 感谢 Hennes 的详细回复。谢谢一堆。由于目前 haproxy 工作正常,如果我们想从该节点为大约 100k 客户提供服务,想知道需要进行哪些调整。请注意,所有这些连接都是持久的。 (2认同)
  • 没有办法用当前的信息来回答那部分。我们不知道您使用的是哪种硬件或哪种操作系统(Linux?FreeBSD?Solaris、OpenBSD?HA 代理支持所有这些)。我们也不知道您用户的平均使用情况。如果他们所做的只是访问网页,那么就会建立、使用和拆除连接。如果他们都建立了真正持久的连接,那么 haproxy 将需要保留更多的状态数据。 (2认同)