码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2016-06-13 19:22:27      阅读:623      评论:0      收藏:0      [点我收藏+]

标签:nf_conntrack   iptable   

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

同时,如下图所示,在系统日志中重复出现大量如下错误信息:

Jun 13 15:20:23 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:24 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:24 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:25 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:25 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:25 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:25 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:25 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:25 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:25 web3 kernel: nf_conntrack: table full, dropping packet.

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

在Centos 5.x上是如下的设置:

用户可以尝试通过修改如下内核参数来调整ip_conntrack限制。操作方式简述如下:

1. 在终端下输入如下指令编辑系统内核配置:

# vi /etc/sysctl.conf

2. 设置或修改如下参数:

#哈希表项最大值

net.ipv4.netfilter.ip_conntrack_max = 655350

#超时时间,默认情况下 timeout 是5天(432000秒)

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1200

3. 在终端下输入如下指令使上述配置生效:

#sysctl -p

在Centos 6.x上是上是如下的设置:

1. 在终端下输入如下指令编辑系统内核配置:

# vi /etc/sysctl.conf

2. 设置或修改如下参数:

#哈希表项最大值

net.netfilter.nf_conntrack_max = 655350

#超时时间,默认情况下 timeout 是5天(432000秒)

net.netfilter.nf_conntrack_tcp_timeout_established = 1200

3. 在终端下输入如下指令使上述配置生效:


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

标签:nf_conntrack   iptable   

原文地址:http://linuxpython.blog.51cto.com/10015972/1788810

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!