linux內核調優
文件路徑:/etc/sysctl.conf
centos5系統
[root@www ~]# vi /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 2
(默認值60,對於本端斷開的socket連接,TCP保持在FIN-WAIT-2狀態的時間。對方可能會斷開連接或一直不結束連接或不可預料的進程死亡)
net.ipv4.tcp_tw_reuse = 1
(默認值0,表示是否允許重新應用處於TIME-WAIT狀態的socket用於新的TCP連接,這個對快速重啟動某些服務,而啟動後提示端口已經被使用的情形非常有幫助)
net.ipv4.tcp_tw_recycle = 1
(默認值0,打開快速
net.ipv4.tcp_syncookies = 1
(默認值0,只有在內核編譯時選擇了CONFIG_SYNCOOKIES時才會發生作用。當出現syn等候隊列出現溢出時向對方發送syncookies,目的是為了防止syn flood攻擊)
net.ipv4.tcp_keepalive_time =600
(默認值7200,TCP發送keeplive探測消息的間隔時間,用於確認TCP連接是否有效,防止兩邊建立連接但不發送數據的攻擊)
net.ipv4.ip_local_port_range = 4000 65000
(默認值32765 61000,表示用於向外連接的端口範圍,默認比較小,這個範圍同樣會簡介用於NAT表規模)
net.ipv4.tcp_max_syn_backlog = 16384
(默認值1024,對於那些依然還未獲得客戶端確認的連接請求,需要保存在隊列中最大數目。對於超過128Mb內存的系統,默認值是1024,低於128Mb的則為128.如果服務器經常出現過載,可以嘗試增加這個數字。警告!假如您將此值設為大於1024,最好修改include/net/tcp.h裏面的TCP_SYNQ_HSIZE,以保持TCP_SYNQ_HSIZE*16(syn flood攻擊利用TCP協議散布握手的缺陷,偽造虛假源IP地址發送大量
net.ipv4.tcp_max_tw_buckets = 36000
(默認值18000,系統在同時所處理的最大timewait sockets數目。如果超過此數的話,time—wait socket會被立即砍除並且顯示警告信息,之所以要設定這個限制,純粹為了抵禦那些簡單的Dos攻擊,不過,如果網絡條件需要比默認值更多,則可以提高它(或許還要增加內存)(事實上做NAT的時候最好可以適當的增加該值))
net.ipv4.route.gc_timeout = 100
(默認值300,路由緩存刷新頻率,當一個路由失敗後多長時間跳到另一個路由)
net.ipv4.tcp_syn_retries = 1
(默認值5,對於一個新建連接,內核要發送多少個syn連接請求才決定放棄,不應該大於255,默認值是5,對應於180秒左右的時間,對於大負載而物理通信良好的網絡而言,這個值偏高,可修改為2。這個值僅僅是針對對外的連接,對進來的連接,是由tcp_retries1決定的)
net.ipv4.tcp_synack_retries = 1
(默認值5,對於遠端的連接請求syn,內核會發送syn+ack數據報,以確認收到上一個syn連接請求包。這是所謂的三次握手機制的第二個步驟。這裏決定內核在放棄連接之前所送出的syn+ack數目,不應該大於255,默認值5,對應於189秒左右時間)
net.core.somaxconn = 16384
(默認值128,用來限制監聽(LISTEN)隊列最大數據包的數量,超過這個數量就會導致連接超時或者觸發重傳機制。web應用中listen函數的backlog默認會給我們內核參數的net.core.somaxconn限制到128,而nginx定義的NGX_LISTEN_BACKLOG默認為511,所以有必要調整這個值。對繁忙的服務器,增加該值有助於網絡性能)
net.core.netdev_max_backlog = 16384
(默認值1024,每個網絡接口接收數據包的速率比內核處理這些包速率快時,允許送到隊列的數據包的最大數目,對重負載服務器而言,該值需要調高一些)
net.ipv4.tcp_max_orphans = 16384
(默認值8192,系統所能處理不屬於任何進程的TCP sockets最大數量。假如超過這個數量,那麽不屬於任何進程的鏈接會被立即reset,並同時顯示警告信息。只所以要設定這個限制,純粹為了抵禦那些簡單的DoS攻擊,千萬不要依賴這個或是人為的降低這個限制。如果內存大更應該增加這個值。(這個值redhat AS版本中設置為32768,但是很多防火墻修改的時候,建議該值修改為2000))
#一下參數是對iptables防火墻的優化,防火墻不開會有提示,可以忽略不理。
net.ipv4.ip_conntrack_max = 25000000
(默認值65536,系統支持的最大ipv4鏈接數,默認65536(實時上這也是理論最大值),同時這個值和你的內存大小有關,如果內存128M,這個值最大8192,1g以上都是默認65536,這個值受/proc/sys/net/ipv4/ip_conntrack_max限制)
net.ipv4.netfilter.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180
(默認值432000,已建立的tcp鏈接的超時時間,默認432000,也就是5天,影響:這個值過大將導致一些可能已經不用的鏈接常駐於內存中,占用大量鏈接資源,從而可能導致NAT ip_conntrack:table full的問題。建議:對於NAT負載相對本機NAT表大小很緊張的時候,可能需要考慮縮小這個值,以盡早清除連接,保證有可用的連接資源。如果不緊張,不必修改)
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
(默認值120,time_wait狀態超時時間,超過該時間就清除該連接)
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
(默認值60,close_wait狀態超時時間,超過該時間就清除該連接)
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
(默認值120,fin_wait狀態超時時間,超過該時間就清楚該連接)
[root@www ~]# sysctl –p #使配置文件生效
由於centos6系統中的模塊名不是ip_conntrack,而是nf_conntrack,所以在/etc/sysctl.conf優化時,需要把net.ipv4.netfilter.ip_conntrack_max這種老參數,改成net.netfilter.nf_conntrack_max這樣才行
centos6
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
linux內核調優