天天看點

Linux TCP 系統參數配置

我們這裡應用的是centos5.3,并核心使用的是2.6.18-128.el5pae #1 smp 。修改部分tcp ,有的是為了提高性能與負載,但是存在降低穩定性的風險。有的則是安全方面的配置,則有可能犧牲了性能。

1.tcp keepalive tcp連接配接保鮮設定

2. syn cookies設定

在centos5.3中,該選項預設值是1,即啟用syn cookies功能。我們建議先關閉,直到确定受到syn flood攻擊的時候再開啟syn cookies功能,有效地防止syn flood攻擊。也可以通過iptables規則拒絕syn flood攻擊。

3.tcp  連接配接建立設定

tcp_max_syn_backlog  syn隊列的長度,時常稱之為未建立連接配接隊列。系統核心維護着這樣的一個隊列,用于容納狀态為syn_resc的tcp連接配接(half-open connection),即那些依然尚未得到用戶端确認(ack)的tcp連接配接請求。加大該值,可以容納更多的等待連接配接的網絡連接配接數。

tcp_syn_retries  建立tcp連接配接請求,需要發送一個syn包,該值決定核心需要嘗試發送多少次syn連接配接請求才決定放棄建立連接配接。預設值是5. 對于高負責且通信良好的實體網絡而言,調整為2

tcp_synack_retries  對于遠端syn連接配接請求,核心會發送syn+ack資料包來确認收到了上一個syn連接配接請求包,然後等待遠端的确認(ack資料包)。該值則指定了核心會向遠端發送tcp_synack_retires次syn+ack資料包。預設設定值是5,可以調整為2

4. tcp 連接配接斷開相關設定

tcp_fin_timeout 對于由本端主動斷開連接配接的tcp連接配接,本端會主動發送一個fin資料報,在收到遠端ack後,且并沒有收到遠端fin包之前,該tcp連接配接的狀态是fin_wait_2狀态,此時當遠端關閉了應用,網絡不可達(拔網張),程式不可斷僵死等等,本端會一直保留狀态為fin_wait_2狀态的tcp連接配接,該值tcp_fin_timeout則指定了狀态為fin_wait_2的tcp連接配接儲存多長時間,一個fin_wait_2的tcp連接配接最多占1.5k記憶體。系統預設值是60秒,可以将此值調整為30秒,甚至10秒。

tcp_max_tw_buckets 系統同時處理time_wait sockets數目。如果一旦time_wait tcp連接配接數超過了這個數目,系統會強制清除并且顯示警告消息。設立該限制,主要是防止那些簡單的dos攻擊,加大該值有可能消耗更多的記憶體資源。如果time_wait socket過多,則有可能耗盡記憶體資源。預設值是18w,可以将此值設定為5000~30000 tcp_tw_resue 是否可以使用time_wait tcp連接配接用于建立新的tcp連接配接。

tcp_tw_recycle 是否開啟快帶回收time_wait tcp連接配接的功能。

5. tcp 記憶體資源使用相參數設定

rmem_max 定義了接收視窗可以使用的最大值,可以根據bdp值進行調節。

wmem_max 定義了發送視窗可以使用的最大值,可以根據bdp什值進行調整。

tcp_mem [low, pressure, high] tcp用這三個值來跟蹤記憶體使用情況,來限定資源占用。通常情況下,在系統boot之時,核心會根據可用記憶體總數計算出這些值。如果出現了out of socket memory,則可以試着修改這個參數。

1)low: 當tcp使用了低于該值的記憶體頁面數時,tcp不會考濾釋放記憶體。

2)pressure: 當tcp使用了超過該值的記憶體頁面數量,tcp試圖穩定其對記憶體的占用,進入pressure模式,直到記憶體消耗達于low值,退出該模式。

3)hight:允許所有tcp sockets用于排隊緩沖資料報的記憶體頁數。

tcp_rmem [min, default, max]

1)min 為每個tcp連接配接(tcp socket)預留用于接收緩沖的記憶體數量,即使在記憶體出現緊張情況下tcp socket都至少會有這麼多數量的記憶體用于接收緩沖。

2)default 為tcp socket預留用于接收緩沖的記憶體數量,預設情況下該值影響其它協定使用的 rmem_default的值,是以有可能被rmem_default覆寫。

3)max 該值為每個tcp連接配接(tcp socket)用于接收緩沖的記憶體最大值。該值不會影響wmem_max的值,設定了選項參數 so_sndbuf則不受該值影響。

tcp_wmem [min, default, max] 如上(tcp_rmen)隻不過用于發送緩存。

注:

1)可以通過sysctl -w 或者寫入/etc/sysctl.conf永久儲存

2)性能調優僅在于需要的時候進行調整,調整以後需要采集資料與基準測試資料進行比較。建議,不需要盲從地調整這些參數。

<b> 原文釋出時間為:2013-05-29</b>

<b>本文來自雲栖社群合作夥伴“linux中國”</b>

繼續閱讀