Linux服务器出现间歇性丢包的情况

Linux NAT 哈希表满导致服务器丢包

Linux服务器出现间歇性丢包的情况,通过 tracertmtr 等手段排查,外部网络未见异常。

同时,如下图所示,在系统日志中重复出现大量(kernel nf_conntrack: table full, dropping packet)错误信息

说明: ip_conntrack 是 Linux 系统内 NAT 的一个跟踪连接条目的模块。ip_conntrack 模块会使用一个哈希表记录 tcp 通讯协议的 established connection 记录,当这个哈希表满了的时候,便会导致 nf_conntrack: table full, dropping packet 错误。

用户可以尝试参阅如下步骤,通过修改如下内核参数来调整 ip_conntrack 限制。

Centos 5.x 系统

  • 修改文件
1
vi /etc/sysctl.conf
  • 相关参数
1
2
3
4
5
#哈希表项最大值
net.ipv4.netfilter.ip_conntrack_max = 655350
#超时时间,默认情况下 timeout 是5天(432000秒)
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1200
  • 使配置生效
1
sysctl -p

Centos 6.x 及以上系统

  • 修改文件
1
# vi /etc/sysctl.conf
  • 相关参数
1
2
3
4
5
哈希表项最大值
net.netfilter.nf_conntrack_max = 655350
超时时间,默认情况下 timeout 是5天(432000秒)
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
  • 使配置生效
1
sysctl -p

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器