FIN_WAIT 导致连接和接收变慢

FIN_WAIT 导致连接和接收变慢

我正在使用 mosquitto 作为代理,使用 MQTT 协议在客户端之间交换数据。但最近我遇到了以下现象。

我的 mosquitto 有时连接很困难,也会发送。检查完所有东西后,mosquitto 仍在正常运行,CPU 和内存没有峰值。但是,当使用 检查时netstat,我看到 FIN_WAIT1 队列中有多达 2000 个连接。这导致 MQTT 连接受到影响,我特意检查了一下,没有迹象表明受到特定 IP 的攻击,其中的每个连接都来自不同的 IP,我认为那就是我的客户端断开连接的时候。因为当客户端向服务器发送数据包以断开连接时会出现 FIN_WAIT1。

是不是因为TCP端口缓冲区溢出?

我的客户端数量始终在 10000 左右。我的配置是 4 核/4GB RAM。

答案1

我认为您需要修改一些 sysctl 值。Linux 内核默认调整为可以很好地处理任何事情,当您执行一些负载服务时,您可能需要调整一些东西,尤其是网络缓冲区等。

尝试将/proc/sys/net/ipv4/tcp_max_orphans其更改为低于默认值的值,以更快地杀死它们(查看 3.3.11. tcp_max_orphans 部分这里),并可能做更多修改,如这个指导

相关内容