Linux NAT哈希表滿致使服務器丟包

發現ECS Linux服務器出現間歇性丟包的狀況,經過tracert、mtr等手段排查,外部網絡未見異常。web

同時,以下圖所示,在系統日誌中重複出現大量以下錯誤信息:服務器

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錯誤。tcp

在Centos 5.x上是以下的設置:ide

用戶能夠嘗試經過修改以下內核參數來調整ip_conntrack限制。操做方式簡述以下:spa

1. 在終端下輸入以下指令編輯系統內核配置:.net

# vi /etc/sysctl.conf日誌

2. 設置或修改以下參數:orm

#哈希表項最大值ip

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. 在終端下輸入以下指令使上述配置生效:

相關文章
相關標籤/搜索