通過/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