我们在生产环境中运行 haproxy,支持大约 10k+ 个并发用户。但我们在 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
有人能告诉我需要做哪些调整吗?
请注意,所有这些连接都是持久连接。
tcp_fin_timeout = 30
tcp_keepalive_time = 1800
目前,该应用程序运行良好。但我想知道,随着我们向这个 haproxy 节点添加更多用户,是否会出现任何问题。
答案1
您在第一段中列出的连接要么是已建立的,要么在使用后正在清理中。已建立的意思就如其名称所暗示的那样。您的某个用户和 HAProxy 之间建立了连接。按预期使用。
您在第一段中提到的其他状态都表示先前建立的连接已完成数据传输。我能解释这一点的最好方式是用图表。
简而言之:如果您有大量 FIN_WAIT 1 和 FIN_WAIT 2,则服务器没有问题。您只是在等待客户端完成。
由于这不是服务器的问题,因此添加更多用户应该不是问题,除非达到内核网络限制。你没有发布这些限制是什么,所以我无法评论你离它们有多近。