檢視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針對這個問題,可調整以下參數: - echo 180 >/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
- echo 6553600 >/proc/sys/net/ipv4/netfilter/ip_conntrack_max
- echo 120 >/proc/sys/net/ipv4/neigh/default/gc_stale_time
- echo 10240 >/proc/sys/net/ipv4/neigh/default/gc_thresh1
- echo 40960 >/proc/sys/net/ipv4/neigh/default/gc_thresh2
- echo 81920 >/proc/sys/net/ipv4/neigh/default/gc_thresh3
或 vi /etc/sysctl.conf - net.ipv4.ip_conntrack_max=6553600
- net.ipv4.netfilter.ip_conntrack_max=6553600
- net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
- net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
- net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120
- net.ipv4.neigh.default.gc_thresh1=10240
- net.ipv4.neigh.default.gc_thresh2=40960
- net.ipv4.neigh.default.gc_thresh3=81920
- net.core.rmem_default = 2097152
- net.core.rmem_max=16777216
- net.core.wmem_max=16777216
- 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. |