TCP 数据包在应用服务器上丢失

TCP 数据包在应用服务器上丢失

我在 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

(添加此答案只是为了避免出现未回答的问题:))

相关内容