通过/proc/sys/net/ipv4/优化Linux下网络性能
通過/proc/sys/net/ipv4/優化Linux下網絡性能
/proc/sys/net/ipv4/優化
1)????? /proc/sys/net/ipv4/ip_forward
該文件表示是否打開IP轉發。
0,禁止
1,轉發
?
缺省設置:0
2)????? /proc/sys/net/ipv4/ip_default_ttl
| ? |
該文件表示一個數據報的生存周期(Time To Live),即最多經過多少路由器。?
??
缺省設置:64?
增加該值會降低系統性能。?
3)????? /proc/sys/net/ipv4/ip_no_pmtu_disc?
該文件表示在全局范圍內關閉路徑MTU探測功能。?
??
缺省設置:0?
4)????? /proc/sys/net/ipv4/route/min_pmtu?
該文件表示最小路徑MTU的大小。?
??
缺省設置:552?
5)????? /proc/sys/net/ipv4/route/mtu_expires?
該文件表示PMTU信息緩存多長時間(秒)。?
??
缺省設置:600(秒)?
6)????? /proc/sys/net/ipv4/route/min_adv_mss?
該文件表示最小的MSS(Maximum Segment Size)大小,取決于第一跳的路由器MTU。?
??
缺省設置:256(bytes)?
6.1 IP Fragmentation?
1)????? /proc/sys/net/ipv4/ipfrag_low_thresh?
/proc/sys/net/ipv4/ipfrag_low_thresh?
兩個文件分別表示用于重組IP分段的內存分配最低值和最高值,一旦達到最高內存分配值,其它分段將被丟棄,直到達到最低內存分配值。?
??
缺省設置:196608(ipfrag_low_thresh)?
262144(ipfrag_high_thresh)?
2)????? /proc/sys/net/ipv4/ipfrag_time?
該文件表示一個IP分段在內存中保留多少秒。?
??
缺省設置:30(秒)?
6.2 INET Peer Storage?
1)????? /proc/sys/net/ipv4/inet_peer_threshold?
INET對端存儲器某個合適值,當超過該閥值條目將被丟棄。該閥值同樣決定生存?
時間以及廢物收集通過的時間間隔。條目越多,存活期越低,GC 間隔越短。?
??
缺省設置:65664?
2)????? /proc/sys/net/ipv4/inet_peer_minttl?
條目的最低存活期。在重組端必須要有足夠的碎片(fragment)存活期。這個最低?
存活期必須保證緩沖池容積是否少于 inet_peer_threshold。該值以 jiffies為?
單位測量。?
??
缺省設置:120?
3)????? /proc/sys/net/ipv4/inet_peer_maxttl?
條目的最大存活期。在此期限到達之后,如果緩沖池沒有耗盡壓力的話(例如:緩?
沖池中的條目數目非常少),不使用的條目將會超時。該值以 jiffies為單位測量。?
??
缺省設置:600?
4)????? /proc/sys/net/ipv4/inet_peer_gc_mintime?
廢物收集(GC)通過的最短間隔。這個間隔會影響到緩沖池中內存的高壓力。該值?
以 jiffies為單位測量。?
??
缺省設置:10?
5)????? /proc/sys/net/ipv4/inet_peer_gc_maxtime?
廢物收集(GC)通過的最大間隔,這個間隔會影響到緩沖池中內存的低壓力。該值?
以 jiffies為單位測量。?
??
缺省設置:120?
6.3 TCP Variables?
1)????? /proc/sys/net/ipv4/tcp_syn_retries?
該文件表示本機向外發起TCP SYN連接超時重傳的次數,不應該高于255;該值僅僅針對外出的連接,對于進來的連接由tcp_retries1控制。?
??
缺省設置:5?
2)????? /proc/sys/net/ipv4/tcp_keepalive_probes?
該文件表示丟棄TCP連接前,進行最大TCP保持連接偵測的次數。保持連接僅在?
SO_KEEPALIVE套接字選項被打開時才被發送。?
??
缺省設置:9(次)?
3)????? /proc/sys/net/ipv4/tcp_keepalive_time?
該文件表示從不再傳送數據到向連接上發送保持連接信號之間所需的秒數。?
??
缺省設置:7200(2小時)?
4)????? /proc/sys/net/ipv4/tcp_keepalive_intvl?
該文件表示發送TCP探測的頻率,乘以tcp_keepalive_probes表示斷開沒有相應的TCP連接的時間。?
??
缺省設置:75(秒)?
5)????? /proc/sys/net/ipv4/tcp_retries1?
該文件表示放棄回應一個TCP連接請求前進行重傳的次數。?
缺省設置:3?
6)????? /proc/sys/net/ipv4/tcp_retries2?
該文件表示放棄在已經建立通訊狀態下的一個TCP數據包前進行重傳的次數。?
缺省設置:15?
7)????? /proc/sys/net/ipv4/tcp_orphan_retries?
在近端丟棄TCP連接之前,要進行多少次重試。默認值是 7 個,相當于 50秒–?
16分鐘,視 RTO 而定。如果您的系統是負載很大的web服務器,那么也許需?
要降低該值,這類 sockets 可能會耗費大量的資源。另外參考?
tcp_max_orphans。?
8)????? /proc/sys/net/ipv4/tcp_fin_timeout?
對于本端斷開的socket連接,TCP保持在FIN-WAIT-2狀態的時間。對方可能?
會斷開連接或一直不結束連接或不可預料的進程死亡。默認值為 60 秒。過去在?
2.2版本的內核中是 180 秒。您可以設置該值,但需要注意,如果您的機器為負?
載很重的web服務器,您可能要冒內存被大量無效數據報填滿的風險,?
FIN-WAIT-2 sockets 的危險性低于 FIN-WAIT-1,因為它們最多只吃 1.5K?
的內存,但是它們存在時間更長。另外參考 tcp_max_orphans。?
??
缺省設置:60(秒)?
9)????? /proc/sys/net/ipv4/tcp_max_tw_buckets?
系統在同時所處理的最大timewait sockets 數目。如果超過此數的話,?
time-wait socket 會被立即砍除并且顯示警告信息。之所以要設定這個限制,純?
粹為了抵御那些簡單的 DoS 攻擊,千萬不要人為的降低這個限制,不過,如果?
網絡條件需要比默認值更多,則可以提高它(或許還要增加內存)。?
??
缺省設置:180000?
10) /proc/sys/net/ipv4/tcp_tw_recyle?
打開快速 TIME-WAIT sockets 回收。除非得到技術專家的建議或要求,?請不要隨?
意修改這個值。?
??
缺省設置:0?
11) /proc/sys/net/ipv4/tcp_tw_reuse?
該文件表示是否允許重新應用處于TIME-WAIT狀態的socket用于新的TCP連接。?
??
缺省設置:0?
12) /proc/sys/net/ipv4/tcp_max_orphans?
系統所能處理不屬于任何進程的TCP sockets最大數量。假如超過這個數量,那?
么不屬于任何進程的連接會被立即reset,并同時顯示警告信息。之所以要設定這?
個限制,純粹為了抵御那些簡單的 DoS 攻擊,千萬不要依賴這個或是人為的降?
低這個限制。?
??
缺省設置:8192?
13) /proc/sys/net/ipv4/tcp_abort_on_overflow?
當守護進程太忙而不能接受新的連接,就向對方發送reset消息,默認值是false。?
這意味著當溢出的原因是因為一個偶然的猝發,那么連接將恢復狀態。只有在你確?
信守護進程真的不能完成連接請求時才打開該選項,該選項會影響客戶的使用。?
??
缺省設置:0?
14) /proc/sys/net/ipv4/tcp_syncookies?
該文件表示是否打開TCP同步標簽(syncookie),內核必須打開了 CONFIG_SYN_COOKIES項進行編譯。同步標簽(syncookie)可以防止一個套接字在有過多試圖連接到達時引起過載。?
??
缺省設置:0?
15) /proc/sys/net/ipv4/tcp_stdurg?
使用 TCP urg pointer 字段中的主機請求解釋功能。大部份的主機都使用老舊的?
BSD解釋,因此如果您在 Linux 打開它,或會導致不能和它們正確溝通。?
??
缺省設置:0?
16) /proc/sys/net/ipv4/tcp_max_syn_backlog?
對于那些依然還未獲得客戶端確認的連接請求,需要保存在隊列中最大數目。對于?
超過 128Mb 內存的系統,默認值是 1024,低于 128Mb 的則為 128。如果?
服務器經常出現過載,可以嘗試增加這個數字。警告!假如您將此值設為大于?
1024,最好修改 include/net/tcp.h 里面的 TCP_SYNQ_HSIZE,以保持?
TCP_SYNQ_HSIZE*16 0)或者bytes-bytes/2^(-tcp_adv_win_scale)(如?
果tcp_adv_win_scale 128Mb 32768-610000)則系統將忽略所有發送給自己?
的ICMP ECHO請求或那些廣播地址的請求。?
??
缺省設置:1024?
17) /proc/sys/net/ipv4/tcp_window_scaling?
該文件表示設置tcp/ip會話的滑動窗口大小是否可變。參數值為布爾值,為1時表示可變,為0時表示不可變。tcp/ip通常使用的窗口最大可達到 65535 字節,對于高速網絡,該值可能太小,這時候如果啟用了該功能,可以使tcp/ip滑動窗口大小增大數個數量級,從而提高數據傳輸的能力。?
??
缺省設置:1?
18) /proc/sys/net/ipv4/tcp_sack?
該文件表示是否啟用有選擇的應答(Selective Acknowledgment),這可以通過有選擇地應答亂序接收到的報文來提高性能(這樣可以讓發送者只發送丟失的報文段);(對于廣域網通信來說)這個選項應該啟用,但是這會增加對 CPU 的占用。?
??
缺省設置:1?
19) /proc/sys/net/ipv4/tcp_timestamps?
該文件表示是否啟用以一種比超時重發更精確的方法(請參閱 RFC 1323)來啟用對 RTT 的計算;為了實現更好的性能應該啟用這個選項。?
??
缺省設置:1?
20) /proc/sys/net/ipv4/tcp_fack?
該文件表示是否打開FACK擁塞避免和快速重傳功能。?
??
缺省設置:1?
21) /proc/sys/net/ipv4/tcp_dsack?
該文件表示是否允許TCP發送“兩個完全相同”的SACK。?
??
缺省設置:1?
22) /proc/sys/net/ipv4/tcp_ecn?
該文件表示是否打開TCP的直接擁塞通告功能。?
??
缺省設置:0?
23) /proc/sys/net/ipv4/tcp_reordering?
該文件表示TCP流中重排序的數據報最大數量。?
??
缺省設置:3?
24) /proc/sys/net/ipv4/tcp_retrans_collapse?
該文件表示對于某些有bug的打印機是否提供針對其bug的兼容性。?
??
缺省設置:1?
25) /proc/sys/net/ipv4/tcp_wmem?
該文件包含3個整數值,分別是:min,default,max?
Min:為TCP socket預留用于發送緩沖的內存最小值。每個TCP socket都可以使用它。?
Default:為TCP socket預留用于發送緩沖的內存數量,默認情況下該值會影響其它協議使用的net.core.wmem中default的 值,一般要低于net.core.wmem中default的值。?
Max:為TCP socket預留用于發送緩沖的內存最大值。該值不會影響net.core.wmem_max,今天選擇參數SO_SNDBUF則不受該值影響。默認值為128K。?
??
缺省設置:4096 16384 131072?
26) /proc/sys/net/ipv4/tcp_rmem?
該文件包含3個整數值,分別是:min,default,max?
Min:為TCP socket預留用于接收緩沖的內存數量,即使在內存出現緊張情況下TCP socket都至少會有這么多數量的內存用于接收緩沖。?
Default:為TCP socket預留用于接收緩沖的內存數量,默認情況下該值影響其它協議使用的net.core.wmem中default的 值。該值決定了在tcp_adv_win_scale、tcp_app_win和tcp_app_win的默認值情況下,TCP 窗口大小為65535。?
Max:為TCP socket預留用于接收緩沖的內存最大值。該值不會影響?net.core.wmem中max的值,今天選擇參數 SO_SNDBUF則不受該值影響。?
??
缺省設置:4096 87380 174760?
27) /proc/sys/net/ipv4/tcp_mem?
該文件包含3個整數值,分別是:low,pressure,high?
Low:當TCP使用了低于該值的內存頁面數時,TCP不會考慮釋放內存。?
Pressure:當TCP使用了超過該值的內存頁面數量時,TCP試圖穩定其內存使用,進入pressure模式,當內存消耗低于low值時則退出pressure狀態。?
High:允許所有tcp sockets用于排隊緩沖數據報的頁面量。?
一般情況下這些值是在系統啟動時根據系統內存數量計算得到的。?
??
缺省設置:24576 32768 49152?
28) /proc/sys/net/ipv4/tcp_app_win?
該文件表示保留max(window/2^tcp_app_win, mss)數量的窗口由于應用緩沖。當為0時表示不需要緩沖。?
??
缺省設置:31?
29) /proc/sys/net/ipv4/tcp_adv_win_scale?
該文件表示計算緩沖開銷bytes/2^tcp_adv_win_scale(如果tcp_adv_win_scale >; 0)或者bytes-bytes/2^(-tcp_adv_win_scale)(如果tcp_adv_win_scale )。?
??
缺省設置:2?
6.4 IP Variables?
1)????? /proc/sys/net/ipv4/ip_local_port_range?
該文件表示TCP/UDP協議打開的本地端口號。?
??
缺省設置:1024 4999?
建議設置:32768 61000?
2)????? /proc/sys/net/ipv4/ip_nonlocal_bind?
該文件表示是否允許進程邦定到非本地地址。?
??
缺省設置:0?
3)????? /proc/sys/net/ipv4/ip_dynaddr?
該參數通常用于使用撥號連接的情況,可以使系統動能夠立即改變ip包的源地址為該ip地址,同時中斷原有的tcp對話而用新地址重新發出一個syn請求 包,開始新的tcp對話。在使用ip欺騙時,該參數可以立即改變偽裝地址為新的ip地址。該文件表示是否允許動態地址,如果該值非0,表示允許;如果該值 大于1,內核將通過log記錄動態地址重寫信息。?
??
缺省設置:0?
4)????? /proc/sys/net/ipv4/icmp_echo_ignore_all?
/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts?
該文件表示內核是否忽略所有的ICMP ECHO請求,或忽略廣播和多播請求。?
0,響應請求?
1,忽略請求?
??
缺省設置:0?
建議設置:1?
5)????? /proc/sys/net/ipv4/icmp_ratelimit?
6)????? /proc/sys/net/ipv4/icmp_ratemask?
7)????? /proc/sys/net/ipv4/icmp_ignore_bogus_error_reponses?
某些路由器違背RFC1122標準,其對廣播幀發送偽造的響應來應答。這種違背行?
為通常會被以告警的方式記錄在系統日志中。如果該選項設置為True,內核不會?
記錄這種警告信息。?
??
缺省設置:0?
8)????? /proc/sys/net/ipv4/igmp_max_memberships?
該文件表示多播組中的最大成員數量。?
??
缺省設置:20?
6.5 Other Configuration?
1)????? /proc/sys/net/ipv4/conf/*/accept_redirects?
如果主機所在的網段中有兩個路由器,你將其中一個設置成了缺省網關,但是該網關?
在收到你的ip包時發現該ip包必須經過另外一個路由器,這時這個路由器就會給你?
發一個所謂的“重定向”icmp包,告訴將ip包轉發到另外一個路由器。參數值為布爾?
值,1表示接收這類重定向icmp 信息,0表示忽略。在充當路由器的linux主機上缺?
省值為0,在一般的linux主機上缺省值為1。建議將其改為0以消除安全性隱患。?
2)????? /proc/sys/net/ipv4/*/accept_source_route?
是否接受含有源路由信息的ip包。參數值為布爾值,1表示接受,0表示不接受。在?
充當網關的linux主機上缺省值為1,在一般的linux主機上缺省值為0。從安全性角?
度出發,建議關閉該功能。?
3)????? /proc/sys/net/ipv4/*/secure_redirects?
其實所謂的“安全重定向”就是只接受來自網關的“重定向”icmp包。該參數就是?
用來設置“安全重定向”功能的。參數值為布爾值,1表示啟用,0表示禁止,缺省值?
為啟用。?
4)????? /proc/sys/net/ipv4/*/proxy_arp?
設置是否對網絡上的arp包進行中繼。參數值為布爾值,1表示中繼,0表示忽略,?
缺省值為0。該參數通常只對充當路由器的linux主機有用。
總結
以上是生活随笔為你收集整理的通过/proc/sys/net/ipv4/优化Linux下网络性能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用MMC管理windows机器
- 下一篇: L4,C16:差1墩,从张数最多的套上去