TCP引數設定

2021-09-24 22:51:57 字數 3556 閱讀 5195

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

1.tcp keepalive tcp連線保鮮設定

echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time

echo 15 > /proc/sys/net/ipv4/tcp_keepalive_intvl

echo 5 > /proc/sys/net/ipv4/tcp_keepalive_probes

keepalive是tcp保鮮定時器。當網路兩端建立了tcp連線之後,閒置idle(雙方沒有任何資料流傳送往來)了tcp_keepalive_time後,伺服器核心就會嘗試向客戶端傳送偵測包,來判斷tcp連線狀況(有可能客戶端崩潰、強制關閉了應用、主機不可達等等)。如果沒有收到對方的回答(ack包),則會在tcp_keepalive_intvl後再次嘗試傳送偵測包,直到收到對對方的ack,如果一直沒有收到對方的ack,一共會嘗試tcp_keepalive_probes次,每次的間隔時間在這裡分別是15s, 30s, 45s, 60s, 75s。如果嘗試tcp_keepalive_probes,依然沒有收到對方的ack包,則會丟棄該tcp連線。

2. syn cookies設定

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

3.tcp  連線建立設定

echo 8192 > /proc/sys/net/ipv4/tcp_max_syn_backlog

echo 2 > /proc/sys/net/ipv4/tcp_syn_retries

echo 2 > /proc/sys/net/ipv4/tcp_synack_retries

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 連線斷開相關設定

echo 30 >  /proc/sys/net/ipv4/tcp_fin_timeout

echo 15000 > /proc/sys/net/ipv4/tcp_max_tw_buckets

echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse

echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle

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 記憶體資源使用相引數設定

echo 16777216 > /proc/sys/net/core/rmem_max

echo 16777216 > /proc/sys/net/core/wmem_max

cat /proc/sys/net/ipv4/tcp_mem

echo 「4096 65536 16777216″ > /proc/sys/net/ipv4/tcp_rmem

echo 「4096 87380 16777216″ > /proc/sys/net/ipv4/tcp_wmem

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)效能調優僅在於需要的時候進行調整,調整以後需要採集資料與基準測試資料進行比較。建議,不需要盲從地調整這些引數。

via 

引數設定 pandas引數設定小技巧

python大資料分析記錄 分享 成長 在日常使用pandas的過程中,由於我們所分析的資料表規模 格式上的差異,使得同樣的函式或方法作用在不同資料上的效果存在差異。而pandas有著自己的一套 引數設定系統 可以幫助我們在遇到不同的資料時靈活調節從而達到最好的效果,本文就將介紹pandas中常用的...

Matlab plot 引數設定

一 matlab繪圖中用到的直線屬性包括 1 linestyle 線形 2 linewidth 線寬 3 color 顏色 4 markertype 標記點的形狀 5 markersize 標記點的大小 6 marke cecolor 標記點內部的填充顏色 7 markeredgecolor 標記點...

JQuery draggable 引數設定

預設設定值 extend ui.draggable,限制y軸 draggable2 draggable 限制x軸 draggable4 draggable draggable5 draggable 限制在父系框架中 delay start 延時移動 draggable draggable 移動20畫...