歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

關於linux中的CONNTRACK_MAX和HASHSIZE要注意的地方

關於linux中的CONNTRACK_MAX和HASHSIZE要注意的地方   如果在壓力測試的時候,並發數增大,但無法完成測試,可以嘗試調整下參數:    vi /etc/sysctl.conf  在kernel2.6之前的添加項:  net.ipv4.netfilter.ip_conntrack_max = 655360  net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180    kernel2.6之後的添加項:  net.nf_conntrack_max = 655360  # net.nf_conntrack_max = 655360 也可以  net.netfilter.nf_conntrack_tcp_timeout_established = 1200    sysctl -p /etc/sysctl.conf  如果報錯:error: "net.nf_conntrack_max" is an unknown key 則需要使用modprobe載入ip_conntrack模塊,lsmod查看模塊已載入。  modprobe  ip_conntrack    關於  --CONNTRACK_MAX 允許的最大跟蹤連接條目,是在內核內存中netfilter可以同時處理的“任務”(連接跟蹤條目)      --HASHSIZE 存儲跟蹤連接條目列表的哈西表的大小    CONNTRACK_MAX和HASHSIZE的默認值        一般來說,CONNTRACK_MAX和HASHSIZE都會設置在“合理”使用的值上,依據可使用的RAM的大小來計算這個值。    CONNTRACK_MAX的默認值       在i386架構上,CONNTRACK_MAX = RAMSIZE (以bytes記) / 16384 =RAMSIZE (以MegaBytes記) * 64,因此,一個32位的帶512M內存的PC在默認情況下能夠處理512*1024^2/16384 = 512*64 = 32768個並發的netfilter連接。       但是真正的公式是:CONNTRACK_MAX = RAMSIZE (in bytes) / 16384 / (x / 32) 這裡x是指針的bit數,(例如,32或者64bit)    請注意:       -默認的CONNTRACK_MAX值不會低於128       -對於帶有超過1G內存的系統,CONNTRACK_MAX的默認值會被限制在65536(但是可以手工設置成更大的值)    HASHSIZE的默認值       通常,CONNTRACK_MAX = HASHSIZE * 8。這意味著每個鏈接的列表平均包含8個conntrack的條目(在優化的情況並且CONNTRACK_MAX達到的情況下),每個鏈接的列表就是一個哈西表條目(一個桶)。       在i386架構上,HASHSIZE = CONNTRACK_MAX / 8 =RAMSIZE (以bytes記) / 131072 = RAMSIZE (以MegaBytes記) * 8。舉例來說,一個32位、帶512M內存的PC可以存儲512*1024^2/128/1024 =512*8 = 4096 個桶(鏈接表)       但是真正的公式是:HASHSIZE = CONNTRACK_MAX / 8 = RAMSIZE (以bytes記) / 131072 / (x / 32)這裡x是指針的bit數,(例如,32或者64bit)    請注意:       -默認HASHSIZE的值不會小於16       -對於帶有超過1G內存的系統,HASHSIZE的默認值會被限制在8192(但是可以手工設置成更大的值)   
Copyright © Linux教程網 All Rights Reserved