我在 RHEL 7.8 上安装了一个监控应用程序(Zabbix 代理),由于我们的环境非常大,因此有 2500 多个代理连接到这台服务器。我们在尝试从代理连接到服务器时经常看到错误。telnet 似乎可以正常工作,但只是间歇性的。
我将 net.core.somaxconn 限制增加到最大值,但没有看到任何明显的效果。
当我尝试查看 netstat 详细信息时,我看到了类似以下内容。
SYN_RECV 168
CLOSE_WAIT 4
ESTABLISHED 196
FIN_WAIT1 3
TIME_WAIT 1151
另外,请注意 Recv-Q 和 Send-Q 值要么都是 128,要么 recv-q 为 129,而另一个为 128
# ss -ntl '( sport = :10051 )'
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 129 128 *:10051 *:*
我已经尝试修改我在尝试解决数据包丢失问题时遇到的以下参数
sysctl -w net.core.somaxconn=65535
sysctl -w net.core.netdev_max_backlog=65535
sysctl -w net.ipv4.tcp_fin_timeout=15
sysctl -w net.ipv4.tcp_syn_retries=2
sysctl -w net.ipv4.tcp_synack_retries=2
sysctl -w net.core.rmem_default=31457280
sysctl -w net.core.rmem_max=12582912
但是我仍然在 netstat -s 中看到这个
# netstat -s | grep -i list
4741435797 times the listen queue of a socket overflowed
4791100644 SYNs to LISTEN sockets dropped
# netstat -s | grep -i list
4741436773 times the listen queue of a socket overflowed
4791101620 SYNs to LISTEN sockets dropped
# netstat -s | grep -i list
4741438013 times the listen queue of a socket overflowed
4791102860 SYNs to LISTEN sockets dropped
我并不是一名真正的 Linux 管理员,而且我束手无策。如果您能提供任何有关如何解决此问题的详细信息,我将不胜感激。
答案1
引用https://support.zabbix.com/browse/ZBX-7933
已修复此问题 - 可用版本:
pre-5.0.15rc1 - df1e26d50d
pre-5.4.4rc1 - b8f4af363a
pre-6.0.0alpha1 - 3131b9702a
文档更新:
What' s new in 5.4.4
What' s new in 5.0.15
Process configuration -> Zabbix server in 5.0, 5.4, 6.0
Process configuration -> Zabbix proxy in 5.0, 5.4, 6.0
Process configuration -> Zabbix agent (UNIX) in 5.0, 5.4, 6.0
Process configuration -> Zabbix agent (Windows) in 5.0, 5.4, 6.0
(添加此答案只是为了避免出现未回答的问题:))