天天看點

關于ip_conntrack: table full, dropping packet

檢視message出現了下面的錯誤:

kernel:ip_conntrack:table full,dropping packet

通過網上查找資料,找到了解決的方法:

顯示目前的會話數:      
cat /proc/net/ip_conntrack | wc -l      
顯示系統目前配置的最大 conntrack 數:      
cat /proc/sys/net/ipv4/ip_conntrack_max      
# 一旦前者的數字大于後者時,系統就報錯,解決辦法:      
echo 81920 > /proc/sys/net/ipv4/ip_conntrack_max      
# 然後寫入 /etc/sysctl.conf

sys.net.ipv4.ip_conntrack_max = 81920      

ip_conntrack: table full, dropping packet

ip_conntip_conntrack子產品預設的連結逾時時間是432000 機關/秒

net.ipv4.ip_conntrack_max 最大net.ipv4.ip_conntrack是根據記憶體大小劃分的。

調整系統核心

vi /etc/sysctl.conf

net.ipv4.ip_conntrack_max = 81920                 

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1500

  最近一個web系統經常報出如下日志資訊:Apr 17 16:37:26 www kernel: printk: 135 messages suppressed.

  Apr 17 16:37:26 www kernel: ip_conntrack: table full, dropping packet.

  Apr 17 16:37:26 www kernel: ip_conntrack: table full, dropping packet.

  Apr 17 16:37:33 www kernel: printk: 139 messages suppressed.

  Apr 17 16:37:33 www kernel: ip_conntrack: table full, dropping packet.

  Apr 17 16:37:37 www kernel: printk: 60 messages suppressed.

  Apr 17 16:37:37 www kernel: ip_conntrack: table full, dropping packet.

  Apr 17 16:37:52 www kernel: printk: 19 messages suppressed.

  Apr 17 16:37:52 www kernel: ip_conntrack: table full, dropping packet.有丢包現象,應該是系統核心屏蔽了網卡功能,此時系統對外表現為連接配接時通時斷,接着執行如下操作:[[email protected] ~]# cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max

  65536針對這個問題,可調整以下參數:

  1. echo 180 >/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established 
  2. echo 6553600 >/proc/sys/net/ipv4/netfilter/ip_conntrack_max 
  3. echo 120 >/proc/sys/net/ipv4/neigh/default/gc_stale_time 
  4. echo 10240 >/proc/sys/net/ipv4/neigh/default/gc_thresh1 
  5. echo 40960 >/proc/sys/net/ipv4/neigh/default/gc_thresh2 
  6. echo 81920 >/proc/sys/net/ipv4/neigh/default/gc_thresh3 

vi /etc/sysctl.conf

  1. net.ipv4.ip_conntrack_max=6553600 
  2. net.ipv4.netfilter.ip_conntrack_max=6553600 
  3. net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120 
  4. net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60 
  5. net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120 
  6. net.ipv4.neigh.default.gc_thresh1=10240 
  7. net.ipv4.neigh.default.gc_thresh2=40960 
  8. net.ipv4.neigh.default.gc_thresh3=81920 
  9. net.core.rmem_default = 2097152 
  10. net.core.rmem_max=16777216 
  11. net.core.wmem_max=16777216 
  12. net.core.wmem_default = 2097152 

再sysctl -p相關參數說明:ARP支援一個sysctl接口,可以用以配置全局參數或逐個網絡接口地進行配制。該sysctl可以通過

/proc/sys/net/ipv4/neigh/*/*

檔案或者使用

sysctl

(2)接口來通路。系統中每個接口都在/proc/sys/net/ipv4/neigh/.中有自己的目錄。`default'目錄中的設定用于所有建立的裝置。sysctl相關的時間是以秒為機關,除非特别聲明過.

anycast_delay

  對IPv6相鄰請求資訊的回複的最大延遲時間;目前還不支援anycast。預設值為1秒。

app_solicit

  這是在使用多路廣播探測(multicast probe)前,經過網絡連接配接送到使用者間隙ARP端口監控程式的探測(probe)最大數目(見mcast_solicit)。預設值為0。

base_reachable_time

  一旦發現相鄰記錄,至少在一段介于base_reachable_time/2和3*base_reachable_time/2之間的随機時間内,該記錄是有效的。如果收到上層協定的肯定回報,那麼記錄的有效期将延長。預設值是30秒。

delay_first_probe_time

  發現某個相鄰層記錄無效(stale)後,發出第一個探測要等待的時間。預設值是5秒。

gc_interval

  收集相鄰層記錄的無用記錄的垃圾收集程式的運作周期,預設為30秒。

gc_stale_time

  決定檢查一次相鄰層記錄的有效性的周期。當相鄰層記錄失效時,将在給它發送資料前,再解析一次。預設值是60秒。

gc_thresh1

  存在于ARP高速緩存中的最少層數,如果少于這個數,垃圾收集器将不會運作。預設值是128。

gc_thresh2

  儲存在ARP高速緩存中的最多的記錄軟限制。垃圾收集器在開始收集前,允許記錄數超過這個數字5秒。預設值是512。

gc_thresh3

  儲存在ARP高速緩存中的最多記錄的硬限制,一旦高速緩存中的數目高于此,垃圾收集器将馬上運作。預設值是1024。

locktime

  ARP記錄儲存在高速緩存内的最短時間(jiffy數),以防止存在多個可能的映射(potential mapping)時,ARP高速緩存系統的颠簸(經常是由于網絡的錯誤配置而引起)。預設值是1秒。

mcast_solicit

  在把記錄标記為不可抵達的之前,用多路廣播/廣播(multicast/broadcast)方式解析位址的最大次數。

  預設值是3。

proxy_delay

  當接收到有一個請求已知的代理ARP位址的ARP請求時,在回應前可以延遲的jiffy(時間機關,見BUG)數目。這樣,以防止網絡風暴。預設值是0.8秒。

proxy_qlen

  能放入代理ARP位址隊列(proxy-ARP addresses)的資料包最大數目。預設值是64。

retrans_time

  重發一個請求前的等待jiffy(時間機關,見BUG)的數目。預設值是1秒。

ucast_solicit

  詢問ARP端口監控程式前,試圖發送單探測(unicast probe)的次數。(見app_solicit).預設值是3秒。

unres_qlen

  每個沒有被其它網絡層解析的位址,在隊列中可存放包的最大數目。預設值是3.

 原文位址 http://517sou.net/Article/388.aspx

繼續閱讀