/proc/sys/net/ipv4/

來源:互聯網
上載者:User

標籤:sync   squid   exp   提交   跳板   關聯   高負載   多播   erro   

/proc/sys/net/ipv4/icmp_timeexceed_rate
這個在traceroute時導致著名的“Solaris middle star”。這個檔案控制發送ICMP Time Exceeded訊息的比率。

/proc/sys/net/ipv4/igmp_max_memberships
主機上最多有多少個igmp (多播)通訊端進行監聽。

/proc/sys/net/ipv4/inet_peer_gc_maxtime
求 助: Add a little explanation about the inet peer storage? Minimum interval between garbage collection passes. This interval is in effect under low (or absent) memory pressure on the pool. Measured in jiffies.

/proc/sys/net/ipv4/inet_peer_gc_mintime
每一遍片段收集之間的最小時間間隔。當記憶體壓力比較大的時候,調整這個間隔很有效。以jiffies計。

/proc/sys/net/ipv4/inet_peer_maxttl
entries的最大生存期。在pool沒有記憶體壓力的情況下(比如,pool中entries的數量很少的時候),未使用的entries經過一段時間就會到期。以jiffies計。

/proc/sys/net/ipv4/inet_peer_minttl
entries的最小生存期。應該不小於匯聚端分區的生存期。當pool的大小不大於inet_peer_threshold時,這個最小生存期必須予以保證。以jiffies計。

/proc/sys/net/ipv4/inet_peer_threshold
The approximate size of the INET peer storage. Starting from this threshold entries will be thrown aggressively. This threshold also determines entries‘ time-to-live and time intervals between garbage collection passes. More entries, less time-to-live, less GC interval.

/proc/sys/net/ipv4/ip_autoconfig
這個檔案裡面寫著一個數字,表示主機是否通過RARP、BOOTP、DHCP或者其它機製取得其IP配置。否則就是0。

/proc/sys/net/ipv4/ip_default_ttl
資料包的生存期。設定為64是安全的。如果你的網路規模巨大就提高這個值。不要因為好玩而這麼做——那樣會產生有害的路由環路。實際上,在很多情況下你要考慮能否減小這個值。

/proc/sys/net/ipv4/ip_dynaddr/proc/sys/net/ipv4/icmp_destunreach_rate

如果你有一個動態地址的自動撥號介面,就得設定它。當你的自動撥號介面啟用的時候,本地所有沒有收到回覆的TCP通訊端會重新綁定到正確的地址上。這可以解決引發撥號的通訊端本身無法工作,重試一次卻可以的問題。

/proc/sys/net/ipv4/ip_forward
核心是否轉寄資料包。預設禁止。

/proc/sys/net/ipv4/ip_local_port_range
用於向外串連的連接埠範圍。預設情況下其實很小:1024到4999。

/proc/sys/net/ipv4/ip_no_pmtu_disc
如果你想禁止“沿途MTU發現”就設定它。“沿途MTU發現”是一種技術,可以在傳輸路徑上檢測出最大可能的MTU值。參見Cookbook一章中關於“沿途MTU發現”的內容。

/proc/sys/net/ipv4/ipfrag_high_thresh
用 於IP分區匯聚的最大記憶體用量。分配了這麼多位元組的記憶體後,一旦用盡,分區處理常式就會丟棄分區。When ipfrag_high_thresh bytes of memory is allocated for this purpose, the fragment handler will toss packets until ipfrag_low_thresh is reached.

/proc/sys/net/ipv4/ip_nonlocal_bind
如果你希望你的應用程式能夠綁定到不屬於本地網卡的地址上時,設定這個選項。如果你的機器沒有專線串連(甚至是動態串連)時非常有用,即使你的串連斷開,你的服務也可以啟動並綁定在一個指定的地址上。

/proc/sys/net/ipv4/ipfrag_low_thresh
用於IP分區匯聚的最小記憶體用量。

/proc/sys/net/ipv4/ipfrag_time
IP分區在記憶體中的保留時間(秒數)。

/proc/sys/net/ipv4/tcp_abort_on_overflow
一個布爾類型的標誌,控制著當有很多的串連請求時核心的行為。啟用的話,如果服務超載,核心將主動地發送RST包。

/proc/sys/net/ipv4/tcp_fin_timeout
如 果通訊端由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間。對端可以出錯並永遠不關閉串連,甚至意外當機。預設值是60秒。2.2 核心的通常值是180秒,你可以按這個設定,但要記住的是,即使你的機器是一個輕載的WEB伺服器,也有因為大量的死通訊端而記憶體溢出的風險,FIN- WAIT-2的危險性比FIN-WAIT-1要小,因為它最多隻能吃掉1.5K記憶體,但是它們的生存期長些。參見tcp_max_orphans。

/proc/sys/net/ipv4/tcp_keepalive_time
當keepalive起用的時候,TCP發送keepalive訊息的頻度。預設是2小時。

/proc/sys/net/ipv4/tcp_keepalive_intvl
當探測沒有確認時,重新發送探測的頻度。預設是75秒。

/proc/sys/net/ipv4/tcp_keepalive_probes
在認定串連失效之前,發送多少個TCP的keepalive探測包。預設值是9。這個值乘以tcp_keepalive_intvl之後決定了,一個串連發送了keepalive之後可以有多少時間沒有回應。

/proc/sys/net/ipv4/tcp_max_orphans
系 統中最多有多少個TCP通訊端不被關聯到任何一個使用者檔案控制代碼上。如果超過這個數字,孤兒串連將即刻被複位並列印出警告資訊。這個限制僅僅是為了防止簡單的DoS攻擊,你絕對不能過分依靠它或者人為地減小這個值,更應該增加這個值(如果增加了記憶體之後)。This limit exists only to prevent simple DoS attacks, you _must_ not rely on this or lower the limit artificially, but rather increase it (probably, after increasing installed memory), if network conditions require more than default value, and tune network services to linger and kill such states more aggressively. 讓我再次提醒你:每個孤兒通訊端最多能夠吃掉你64K不可交換的記憶體。

/proc/sys/net/ipv4/tcp_orphan_retries
本端試圖關閉TCP串連之前重試多少次。預設值是7,相當於50秒~16分鐘(取決於RTO)。如果你的機器是一個重載的WEB伺服器,你應該考慮減低這個值,因為這樣的通訊端會消耗很多重要的資源。參見tcp_max_orphans。

/proc/sys/net/ipv4/tcp_max_syn_backlog
記 錄的那些尚未收到用戶端確認資訊的串連請求的最大值。對於有128M記憶體的系統而言,預設值是1024,小記憶體的系統則是128。如果伺服器不堪重負,試 試提高這個值。注意!如果你設定這個值大於1024,最好同時調整include/net/tcp.h中的TCP_SYNQ_HSIZE,以保證 TCP_SYNQ_HSIZE*16 ≤tcp_max_syn_backlo,然後重新編譯核心。

/proc/sys/net/ipv4/tcp_max_tw_buckets
系 統同時保持timewait通訊端的最大數量。如果超過這個數字,time-wait通訊端將立刻被清除並列印警告資訊。這個限制僅僅是為了防止簡單的 DoS攻擊,你絕對不能過分依靠它或者人為地減小這個值,如果網路實際需要大於預設值,更應該增加這個值(如果增加了記憶體之後)。

/proc/sys/net/ipv4/tcp_retrans_collapse
為相容某些糟糕的印表機設定的“將錯就錯”選項。再次發送時,把資料包增大一些,來避免某些TCP協議棧的BUG。

/proc/sys/net/ipv4/tcp_retries1
在認定出錯並向網路層提交錯誤報表之前,重試多少次。預設設定為RFC規定的最小值:3,相當於3秒~8分鐘(取決於RIO)。

/proc/sys/net/ipv4/tcp_retries2
在殺死一個活動的TCP串連之前重試多少次。RFC 1122規定這個限制應該長於100秒。這個值太小了。預設值是15,相當於13~30分鐘(取決於RIO)。

/proc/sys/net/ipv4/tcp_rfc1337
這個開關可以啟動對於在RFC1337中描述的“tcp的time-wait暗殺危機”問題的修複。啟用後,核心將丟棄那些發往time-wait狀態TCP通訊端的RST包。卻省為0。

/proc/sys/net/ipv4/tcp_sack
特別針對丟失的資料包使用選擇性ACK,這樣有助於快速恢複。

/proc/sys/net/ipv4/tcp_stdurg
使用TCP緊急指標的主機需求解釋。因為絕大多數主機採用BSD解釋,所以如果你在Linux上開啟它,可能會影響它與其它機器的正常通訊。預設是FALSE。
/proc/sys/net/ipv4/tcp_syn_retries
在核心放棄建立串連之前發送SYN包的數量。

/proc/sys/net/ipv4/tcp_synack_retries
為了開啟對端的串連,核心需要發送一個SYN並附帶一個回應前面一個SYN的ACK。也就是所謂三向交握中的第二次握手。這個設定決定了核心放棄串連之前發送SYN+ACK包的數量。

/proc/sys/net/ipv4/tcp_timestamps
時間戳記可以避免序號的卷繞。一個1Gbps的鏈路肯定會遇到以前用過的序號。時間戳記能夠讓核心接受這種“異常”的資料包。

/proc/sys/net/ipv4/tcp_tw_recycle
能夠更快地回收TIME-WAIT通訊端。預設值是1。除非有技術專家的建議和要求,否則不應修改。

/proc/sys/net/ipv4/tcp_window_scaling
一般來說TCP/IP允許視窗尺寸達到65535位元組。對於速度確實很高的網路而言這個值可能還是太小。這個選項允許設定上G位元組的視窗大小,有利於在頻寬*延遲很大的環境中使用。
一旦核心認為它無法發包,就會丟棄這個包,並向發包的主機發送ICMP通知。

/proc/sys/net/ipv4/icmp_echo_ignore_all
根本不要響應echo包。請不要設定為預設,它可能在你正被利用成為DoS攻擊的跳板時可能有用。
/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts [Useful]
如果你ping子網的子網地址,所有的機器都應該予以回應。這可能成為非常好用的拒絕服務的攻擊工具。設定為1來忽略這些子網廣播訊息。
/proc/sys/net/ipv4/icmp_echoreply_rate
設定了向任意主機回應echo請求的比率。

/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
設定它之後,可以忽略由網路中的那些聲稱回應地址是廣播位址的主機產生的ICMP錯誤。

/proc/sys/net/ipv4/icmp_paramprob_rate
一個相對不很明確的ICMP訊息,用來回應IP頭或TCP頭損壞的異常資料包。你可以通過這個檔案控制訊息的發送比率。

tcp_syn_retries :INTEGER
預設值是5
對於一個建立串連,核心要發送多少個 SYN 串連請求才決定放棄。不應該大於255,預設值是5,對應於180秒左右時間。(對於大負載而物理通訊良好的網路而言,這個值偏高,可修改為2.這個值僅僅是針對對外的串連,對進來的串連,是由tcp_retries1 決定的)
tcp_synack_retries :INTEGER
預設值是5
對於遠端的串連請求SYN,核心會發送SYN + ACK資料報,以確認收到上一個 SYN串連請求包。這是所謂的三向交握( threeway handshake)機制的第二個步驟。這裡決定核心在放棄串連之前所送出的 SYN+ACK 數目。不應該大於255,預設值是5,對應於180秒左右時間。(可以根據上面的 tcp_syn_retries 來決定這個值)
tcp_keepalive_time :INTEGER
預設值是7200(2小時)
當keepalive開啟的情況下,TCP發送keepalive訊息的頻率。(由於目前網路攻擊等因素,造成了利用這個進行的攻擊很頻繁,曾經也有cu的朋友提到過,說如果2邊建立了串連,然後不發送任何資料或者rst/fin訊息,那麼持續的時間是不是就是2小時,空串連攻擊? tcp_keepalive_time就是預防此情形的.我個人在做nat服務的時候的修改值為1800秒)
tcp_keepalive_probesINTEGER
預設值是9
TCP發送keepalive探測以確定該串連已經斷開的次數。(注意:保持串連僅在SO_KEEPALIVE通訊端選項被開啟是才發送.次數預設不需要修改,當然根據情形也可以適當地縮短此值.設定為5比較合適)
tcp_keepalive_intvl:INTEGER
預設值為75
探測訊息發送的頻率,乘以tcp_keepalive_probes就得到對於從開始探測以來沒有響應的串連殺除的時間。預設值為75秒,也就是沒有活動的串連將在大約11分鐘以後將被丟棄。(對於普通應用來說,這個值有一些偏大,可以根據需要改小.特別是web類伺服器需要改小該值,15是個比較合適的值)
tcp_retries1 :INTEGER
預設值是3
放棄回應一個TCP串連請求前﹐需要進行多少次重試。RFC 規定最低的數值是3﹐這也是預設值﹐根據RTO的值大約在3秒 - 8分鐘之間。(注意:這個值同時還決定進入的syn串連)
tcp_retries2 :INTEGER
預設值為15
在丟棄啟用(已建立通訊狀況)的TCP串連之前﹐需要進行多少次重試。預設值為15,根據RTO的值來決定,相當於13-30分鐘(RFC1122規定,必須大於100秒).(這個值根據目前的網路設定,可以適當地改小,我的網路內修改為了5)
tcp_orphan_retries :INTEGER
預設值是7
在近端丟棄TCP串連之前﹐要進行多少次重試。預設值是7個﹐相當於 50秒 - 16分鐘﹐視 RTO 而定。如果您的系統是負載很大的web伺服器﹐那麼也許需要降低該值﹐這類sockets 可能會耗費大量的資源。另外參的考 tcp_max_orphans 。(事實上做NAT的時候,降低該值也是好處顯著的,我本人的網路環境中降低該值為3)
tcp_fin_timeout :INTEGER
預設值是 60
對於本端斷開的socket串連,TCP保持在FIN-WAIT-2狀態的時間。對方可能會中斷連線或一直不結束串連或不可預料的進程死亡。預設值為 60 秒。過去在2.2版本的核心中是180 秒。您可以設定該值﹐但需要注意﹐如果您的機器為負載很重的web伺服器﹐您可能要冒記憶體被大量無效資料報填滿的風險﹐FIN-WAIT-2 sockets 的危險性低於 FIN-WAIT-1 ﹐因為它們最多隻吃 1.5K 的記憶體﹐但是它們存在時間更長。另外參考 tcp_max_orphans。(事實上做NAT的時候,降低該值也是好處顯著的,我本人的網路環境中降低該值為30)
tcp_max_tw_buckets :INTEGER
預設值是180000
系 統在同時所處理的最大 timewait sockets 數目。如果超過此數的話﹐time-wait socket 會被立即砍除並且顯示警告資訊。之所以要設定這個限制﹐純粹為了抵禦那些簡單的 DoS 攻擊﹐千萬不要人為的降低這個限制﹐不過﹐如果網路條件需要比預設值更多﹐則可以提高它(或許還要增加記憶體)。(事實上做NAT的時候最好可以適當地增加該值)
tcp_tw_recycle :BOOLEAN
預設值是0
開啟快速 TIME-WAIT sockets 回收。除非得到技術專家的建議或要求﹐請不要隨意修改這個值。(做NAT的時候,建議開啟它)

tcp_tw_reuse:BOOLEAN
預設值是0
該檔案表示是否允許重新應用處於TIME-WAIT狀態的socket用於新的TCP串連(這個對快速重啟動某些服務,而啟動後提示連接埠已經被使用的情形非常有協助)
tcp_max_orphans :INTEGER
預設值是8192
系統所能處理不屬於任何進程的TCP sockets最大數量。假如超過這個數量﹐那麼不屬於任何進程的串連會被立即reset,並同時顯示警告資訊。之所以要設定這個限制﹐純粹為了抵禦那些簡單的 DoS 攻擊﹐千萬不要依賴這個或是人為的降低這個限制(這個值Redhat AS版本中設定為32768,但是很多防火牆修改的時候,建議該值修改為2000)
tcp_abort_on_overflow :BOOLEAN
預設值是0
當守護進程太忙而不能接受新的串連,就象對方發送reset訊息,預設值是false。這意味著當溢出的原因是因為一個偶然的猝發,那麼串連將恢複狀態。只有在你確信守護進程真的不能完成串連請求時才開啟該選項,該選項會影響客戶的使用。(對待已經滿載的sendmail,apache這類服務的時候,這個可以很快讓用戶端終止串連,可以給予服務程式處理已有串連的緩衝機會,所以很多防火牆上推薦開啟它)
tcp_syncookies :BOOLEAN
預設值是0
只有在核心編譯時間選擇了CONFIG_SYNCOOKIES時才會發生作用。當出現syn等候隊列出現溢出時象對方發送syncookies。目的是為了防止syn flood攻擊。
注意:該選項千萬不能用於那些沒有收到攻擊的高負載伺服器,如果在日誌中出現synflood訊息,但是調查發現沒有收到synflood攻擊,而是合法使用者的串連負載過高的原因,你應該調整其它參數來提高伺服器效能。參考:
tcp_max_syn_backlog
tcp_synack_retries
tcp_abort_on_overflow
syncookie嚴重的違背TCP協議,不允許使用TCP擴充,可能對某些服務導致嚴重的效能影響(如SMTP轉寄)。(注意,該實現與BSD上面使用的tcp proxy一樣,是違反了RFC中關於tcp串連的三向交握實現的,但是對於防禦syn-flood的確很有用.)
tcp_stdurg :BOOLEAN
預設值為0
使用 TCP urg pointer 欄位中的主機請求解釋功能。大部份的主機都使用老舊的 BSD解釋,因此如果您在 Linux 開啟它﹐或會導致不能和它們正確溝通。

tcp_max_syn_backlog :INTEGER
對於那些依然還未獲得用戶端確認的串連請求﹐需要儲存在隊列中最大數目。對於超過 128Mb 記憶體的系統﹐預設值是 1024 ﹐低於 128Mb 的則為 128。如果伺服器經常出現過載﹐可以嘗試增加這個數字。警告﹗假如您將此值設為大於 1024﹐最好修改 include/net/tcp.h 裡面的 TCP_SYNQ_HSIZE ﹐以保持TCP_SYNQ_HSIZE*16<=tcp_max_syn_backlog ﹐並且編進核心之內。(SYN Flood攻擊利用TCP協議散布握手的缺陷,偽造虛假源IP地址發送大量TCP-SYN半開啟串連到目標系統,最終導致目標系統Socket隊列資源耗 盡而無法接受新的串連。為了應付這種攻擊,現代Unix系統中普遍採用多串連隊列處理的方式來緩衝(而不是解決)這種攻擊,是用一個基本隊列處理正常的完 全串連應用(Connect()和Accept() ),是用另一個隊列單獨存放半開啟串連。這種雙隊列處理方式和其他一些系統核心措施(例如Syn-Cookies/Caches)聯合應用時,能夠比較有效緩解小規模的SYN Flood攻擊(事實證明<1000p/s)加大SYN隊列長度可以容納更多等待串連的網路連接數,所以對Server來說可以考慮增大該值.)
tcp_window_scaling :INTEGER
預設值為1
該 檔案表示設定tcp/ip會話的滑動視窗大小是否可變。參數值為布爾值,為1時表示可變,為0時表示不可變。tcp/ip通常使用的視窗最大可達到 65535 位元組,對於高速網路,該值可能太小,這時候如果啟用了該功能,可以使tcp/ip滑動視窗大小增大數個數量級,從而提高資料轉送的能力(RFC 1323)。(對普通地百M網路而言,關閉會降低開銷,所以如果不是高速網路,可以考慮設定為0)
tcp_timestamps :BOOLEAN
預設值為1
Timestamps 用在其它一些東西中﹐可以防範那些偽造的 sequence 號碼。一條1G的寬頻線路或許會重遇到帶 out-of-line數值的舊sequence 號碼(假如它是由於上次產生的)。Timestamp 會讓它知道這是個 ‘舊封包‘。(該檔案表示是否啟用以一種比逾時重發更精確的方法(RFC 1323)來啟用對 RTT 的計算;為了實現更好的效能應該啟用這個選項。)
tcp_sack :BOOLEAN
預設值為1
使 用 Selective ACK﹐它可以用來尋找特定的遺失的資料報--- 因此有助於快速恢複狀態。該檔案表示是否啟用有選擇的應答(Selective Acknowledgment),這可以通過有選擇地應答亂序接收到的報文來提高效能(這樣可以讓寄件者只發送丟失的報文段)。(對於廣域網路通訊來說這個選項應該啟用,但是這會增加對 CPU 的佔用。)
tcp_fack :BOOLEAN
預設值為1
開啟FACK擁塞避免和快速重傳功能。(注意,當tcp_sack設定為0的時候,這個值即使設定為1也無效)
tcp_dsack :BOOLEAN
預設值為1
允許TCP發送"兩個完全相同"的SACK。
tcp_ecn :BOOLEAN
預設值為0
開啟TCP的直接擁塞通告功能。
tcp_reordering :INTEGER
預設值是3
TCP流中重排序的資料報最大數量 。 (一般有看到推薦把這個數值略微調整大一些,比如5)
tcp_retrans_collapse :BOOLEAN
預設值為1
對於某些有bug的印表機提供針對其bug的相容性。(一般不需要這個支援,可以關閉它)
tcp_wmem(3個INTEGER變數): min, default, max
min
:為TCP socket預留用於發送緩衝的記憶體最小值。每個tcp socket都可以在建議以後都可以使用它。預設值為4096(4K)。
default:為TCP socket預留用於發送緩衝的記憶體數量,預設情況下該值會影響其它協議使用的net.core.wmem_default 值,一般要低於net.core.wmem_default的值。預設值為16384(16K)。
max: 用於TCP socket發送緩衝的記憶體最大值。該值不會影響net.core.wmem_max,"靜態"選擇參數SO_SNDBUF則不受該值影響。預設值為131072(128K)。(對於伺服器而言,增加這個參數的值對於發送資料很有協助,在我的網路環境中,修改為了51200 131072 204800)
tcp_rmem (3個INTEGER變數): min, default, max
min:為TCP socket預留用於接收緩衝的記憶體數量,即使在記憶體出現緊張情況下tcp socket都至少會有這麼多數量的記憶體用於接收緩衝,預設值為8K。
default:為TCP socket預留用於接收緩衝的記憶體數量,預設情況下該值影響其它協議使用的 net.core.wmem_default 值。該值決定了在tcp_adv_win_scaletcp_app_wintcp_app_win=0預設值情況下,TCP視窗大小為65535。預設值為87380
max:用於TCP socket接收緩衝的記憶體最大值。該值不會影響 net.core.wmem_max,"靜態"選擇參數 SO_SNDBUF則不受該值影響。預設值為 128K。預設值為87380*2 bytes。(可以看出,.max的設定最好是default的兩倍,對於NAT來說主要該增加它,我的網路裡為 51200 131072 204800)
tcp_mem(3個INTEGER變數):low, pressure, high
low:當TCP使用了低於該值的記憶體頁面數時,TCP不會考慮釋放記憶體。(理想情況下,這個值應與指定給 tcp_wmem 的第 2 個值相匹配 - 這第 2 個值表明,最大頁面大小乘以最大並發請求數除以頁大小 (131072 * 300 / 4096)。 )
pressure:當TCP使用了超過該值的記憶體頁面數量時,TCP試圖穩定其記憶體使用量,進入pressure模式,當記憶體消耗低於low值時則退出pressure狀態。(理想情況下這個值應該是TCP 可以使用的總緩衝區大小的最大值 (204800 * 300 / 4096)。 )
high:允許所有tcp sockets用於排隊緩衝資料報的頁面量。(如果超過這個值,TCP 串連將被拒絕,這就是為什麼不要令其過於保守 (512000 * 300 / 4096) 的原因了。 在這種情況下,提供的價值很大,它能處理很多串連,是所預期的 2.5 倍;或者使現有串連能夠傳輸 2.5 倍的資料。 我的網路裡為192000 300000 732000)
一般情況下這些值是在系統啟動時根據系統記憶體數量計算得到的。
tcp_app_win : INTEGER
預設值是31
保留max(window/2^tcp_app_win, mss)數量的視窗由於應用緩衝。當為0時表示不需要緩衝。
tcp_adv_win_scale : INTEGER
預設值為2
計算緩衝開銷bytes/2^tcp_adv_win_scale(如果tcp_adv_win_scale > 0)或者bytes-bytes/2^(-tcp_adv_win_scale)(如果tcp_adv_win_scale <= 0)。

tcp_rfc1337 :BOOLEAN
預設值為0
這個開關可以啟動對於在RFC1337中描述的"tcp 的time-wait暗殺危機"問題的修複。啟用後,核心將丟棄那些發往time-wait狀態TCP通訊端的RST 包.

tcp_low_latency : BOOLEAN
預設值為0
允許 TCP/IP 棧適應在高輸送量情況下低延時的情況;這個選項一般情形是的禁用。(但在構建Beowulf 叢集的時候,開啟它很有協助)

tcp_westwood :BOOLEAN
預設值為0
啟用寄件者端的擁塞控制演算法,它可以維護對輸送量的評估,並試圖對頻寬的整體利用情況進行最佳化;對於 WAN 通訊來說應該啟用這個選項。

tcp_bic :BOOLEAN
預設值為0
為快速長距離網路啟用 Binary Increase Congestion;這樣可以更好地利用以 GB 速度進行操作的連結;對於 WAN 通訊應該啟用這個選項。

$ /proc/sys/net/core/wmem_max
最大socket寫buffer,可參考的最佳化值:873200

$ /proc/sys/net/core/rmem_max
最大socket讀buffer,可參考的最佳化值:873200

$ /proc/sys/net/ipv4/tcp_wmem
TCP寫buffer,可參考的最佳化值: 8192 436600 873200

$ /proc/sys/net/ipv4/tcp_rmem
TCP 讀buffer,可參考的最佳化值: 32768 436600 873200

$ /proc/sys/net/ipv4/tcp_mem
同樣有3個值,意思是:
net.ipv4.tcp_mem[0]: 低於此值,TCP沒有記憶體壓力.
net.ipv4.tcp_mem[1]:在此值下,進入記憶體壓力階段.
net.ipv4.tcp_mem[2]: 高於此值,TCP拒絕分配socket.
上述記憶體單位是頁,而不是位元組.可參考的最佳化值是:786432 1048576 1572864

$ /proc/sys/net/core/netdev_max_backlog
進入包的最大裝置隊列.預設是300,對重負載伺服器而言,該值太低,可調整到1000.

$ /proc/sys/net/core/somaxconn
listen()的預設參數,掛起請求的最大數量. 預設是128.對繁忙的伺服器,增加該值有助於網路效能.可調整到256.

$ /proc/sys/net/core/optmem_max
socket buffer的最大初始化值,預設10K.

$ /proc/sys/net/ipv4/tcp_max_syn_backlog
進入SYN包的最大請求隊列. 預設1024.對重負載伺服器,增加該值顯然有好處.可調整到2048.

$ /proc/sys/net/ipv4/tcp_retries2
TCP失敗重傳次數,預設值15,意味著重傳 15次才徹底放棄.可減少到5,以儘早釋放核心資源.

$ /proc/sys/net/ipv4/tcp_keepalive_time
$ /proc/sys/net/ipv4/tcp_keepalive_intvl
$ /proc/sys/net/ipv4/tcp_keepalive_probes
這3個參數與TCP KeepAlive有關.預設值是:

tcp_keepalive_time = 7200 seconds (2 hours)
tcp_keepalive_probes = 9
tcp_keepalive_intvl = 75 seconds

意思是如果某個TCP串連在idle 2個小時後,核心才發起probe.如果probe 9次(每次75秒)不成功,核心才徹底放棄,認為該串連已失效.對伺服器而言,顯然上述值太大. 可調整到:

/proc/sys/net/ipv4/tcp_keepalive_time 1800
/proc/sys/net/ipv4/tcp_keepalive_intvl 30
/proc/sys/net/ipv4/tcp_keepalive_probes 3

$ proc/sys/net/ipv4/ip_local_port_range
指定連接埠範圍的一個配置,預設是32768 61000,已夠大.

net.ipv4.tcp_syncookies = 1
表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防範少量SYN攻擊,預設為0,表示關閉;

net.ipv4.tcp_tw_reuse = 1
表示開啟重用。允許將 TIME-WAIT sockets重新用於新的TCP串連,預設為0,表示關閉;

net.ipv4.tcp_tw_recycle = 1
表示開啟TCP串連中TIME-WAIT sockets的快速回收,預設為0,1表示關閉。

net.ipv4.tcp_fin_timeout = 30
表示如果通訊端由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間。

net.ipv4.tcp_keepalive_time = 1200
表示當keepalive起用的時候,TCP發送keepalive訊息的頻度。預設是2小時,改為20分鐘。

net.ipv4.ip_local_port_range = 1024 65000
表示用於向外串連的連接埠範圍。預設情況下很小:32768到61000,改為1024到65000。

net.ipv4.tcp_max_syn_backlog = 8192
表示SYN隊列的長度,預設為1024,加大隊列長度為8192,可以容納更多等待串連的網路連接數。

net.ipv4.tcp_max_tw_buckets = 5000
表示系統同時保持TIME_WAIT通訊端的最大數量,如果超過這個數字,TIME_WAIT通訊端將立刻被清除並列印警告資訊。預設為180000,改為 5000。對於Apache、Nginx等伺服器,上幾行的參數可以很好地減少TIME_WAIT通訊端數量,但是對於Squid,效果卻不大。此項參數可以控制TIME_WAIT通訊端的最大數量,避免Squid伺服器被大量的TIME_WAIT通訊端拖死。

 

轉載連結:http://blog.chinaunix.net/uid-20721581-id-2460249.html

/proc/sys/net/ipv4/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.