linux系统网络对时,Linux系统网络优化【转】
linux網絡?1, 優化網絡設備接收隊列
net.core.netdev_max_backlog=3000
該文件表示在每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
默認值:Red Hat
Linux release 9 (Shrike)默認為300
rhel5 默認為1000
建議值為3000
2, net.ipv4.conf.lo.accept_redirects
accept_redirects:該參數位于 /proc/sys/net/ipv4/conf/DEV/accept_redirects
(DEV表示具體的網絡接口),如果你的主機所在的網段中有兩個路由器,你將其中一個設置成了缺省網關,但是該網關在收到你的ip包時發現該ip包必須經
過另外一個路由器,這時這個路由器就會給你發一個所謂的“重定向”icmp包,告訴將ip包轉發到另外一個路由器。參數值為布爾值,1表示接收這類重定向
icmp
信息,0表示忽略。在充當路由器的linux主機上缺省值為0,在一般的linux主機上缺省值為1。建議將其改為0,或者使用“安全重定向”(見下文)
以消除安全性隱患。
net.ipv4.conf.lo.accept_redirects=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.eth0.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
3, 打開TIME-WAIT套接字重用功能,對于存在大量連接的Web服務器非常有效。
net.ipv4.tcp_tw_recyle=1
net.ipv4.tcp_tw_reuse=1
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
下邊的命令用來對連接數量非常大的服務器進行調優.
·對于同時支持很多連接的服務器,新的連接可以重新使用TIME-WAIT套接字. 這對于Web服務器非常有效:
如果你使用該命令,還要啟動TIME-WAIT 套接字狀態的快速循環功能:
圖Figure
10-7顯示出將這些功能啟用,連接數量明顯降低.因為每個TCP傳輸都包含遠程客戶端的協議信息緩存,所以有利于提高性能.緩存中存放round-trip時間、最大segment大小、擁塞窗口的信息。
4, 減少處于FIN-WAIT-2連接狀態的時間,使系統可以處理更多的連接。
net.ipv4.tcp_fin_timeout=30
tcp_fin_timeout:在一個tcp會話過程中,在會話結束時,A首先向B發送一個fin包,
在獲 得B的ack確認包后,A就進入FIN WAIT2狀態等待B的fin包然后給B發ack確認包。
這個參數就是用來設置A進入FIN WAIT2狀態等待對方fin包的超時時間。
如果時間到了仍未收到對方的fin包就主動釋放該會話。
參數值為整數,單位為秒,缺省為180秒
對于本端斷開的socket連接,TCP保持在FIN-WAIT-2狀態的時間。對方可能
會斷開連接或一直不結束連接或不可預料的進程死亡。默認值為
60 秒。過去在
2.2版本的內核中是 180
秒。您可以設置該值,但需要注意,如果您的機器為負
載很重的web服務器,您可能要冒內存被大量無效數據報填滿的風險,
FIN-WAIT-2 sockets 的危險性低于
FIN-WAIT-1,因為它們最多只吃 1.5K
的內存,但是它們存在時間更長。另外參考
tcp_max_orphans。
·參數tcp_fin_timeout 是套接字關閉時,保持FIN-WAIT-2狀態的時間。一個TCP連接以three-segment
SYN序列開始, 以three-segment FIN序列結束.均不保留數據.通過改變tcp_fin_timeout的值,
從FIN序列到內存可以空閑出來處理新連接的時間縮短了,使性能得到改進.改變這個值的前要經過認真的監測,避免因為死套接字造成內存溢出.
5, 減少TCP KeepAlive連接偵測的時間,使系統可以處理更多的連接。
net.ipv4.tcp_keepalive_time=1800
/proc/sys/net/ipv4/tcp_keepalive_time
該文件表示從不再傳送數據到向連接上發送保持連接信號之間所需的秒數。
缺省設置:7200(2小時)
服務器的一個問題是,同一時刻的大量TCP連接里有很多的連接被打開但是沒有使用.
TCP的keepalive功能檢測到這些連接,缺省情況下,在2小時之后丟掉.
2個小時的可能導致內存過度使用,降低性能.因此改成1800秒(30分鐘)是個更好的選擇:
6, 增加TCP SYN隊列長度,使系統可以處理更多的并發連接。
net.ipv4.tcp_max_syn_backlog=8192
/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請求或那些廣播地址的請求。
當服務器負載繁重或者是有很多客戶端都是超長延時的連接故障,可能會導致half-open連接數量的增加。這對于Web服務器很來講很平常,尤其有很多撥號客戶時.這些half-open連接保存在
backlog connections 隊列中.將這個值最少設置為4096 (缺省為1024).
即便是服務器不接收這類連接,設置這個值還能防止受到denial-of-service (syn-flood)的攻擊.
7,
1)?優化系統套接字緩沖區
net.core.rmem_max=16777216
net.core.wmem_max=16777216
5) /proc/sys/net/core/rmem_default
該文件指定了接收套接字緩沖區大小的缺省值(以字節為單位)。
缺省設置:110592
6) /proc/sys/net/core/rmem_max
該文件指定了接收套接字緩沖區大小的最大值(以字節為單位)。
缺省設置:131071
7) /proc/sys/net/core/wmem_default
該文件指定了發送套接字緩沖區大小的缺省值(以字節為單位)。
缺省設置:110592
8) /proc/sys/net/core/wmem_max
該文件指定了發送套接字緩沖區大小的最大值(以字節為單位)。
缺省設置:131071
·對于所有協議的隊列,設置最大系統發送緩存(wmem) 和接收緩存(rmem)到8MB
這些設置指定了創建TCP套接字時為其分配的內存容量.
另外,使用如下命令發送和接收緩存.該命令設定了三個值:最小值、初始值和最大值:
第三個值必須小于或等于wmem_max和rmem_max。
8 打開TCP SYN cookie選項,有助于保護服務器免受SyncFlood攻擊。
net.ipv4.tcp_syncookies=1
/proc/sys/net/ipv4/tcp_syncookies
該文件表示是否打開TCP同步標簽(syncookie),內核必須打開了 CONFIG_SYN_COOKIES項進行編譯。
同步標簽(syncookie)可以防止一個套接字在有過多試圖連接到達時引起過載。
tcp_syncookies 參數類型:整型
只有在內核編譯時選擇了CONFIG_SYNCOOKIES時才會發生作用。當出現syn等候隊列出現溢出時象對方發送syncookies。目的是為了防止syn
flood攻擊。默認值是false。
注意:該選項千萬不能用于那些沒有收到攻擊的高負載服務器,如果在日志中出現
synflood消息,但是調查發現沒有收到synflood攻擊,而是合法用戶的連接負載過高的原因,你應該調整其它參數來提高服務器性能。參考:
tcp_max_syn_backlog, tcp_synack_retries, tcp_abort_on_overflow.
syncookie嚴重的違背TCP協議,不允許使用TCP擴展,可能對某些服務導致嚴重的性能影響(如SMTP轉發)。
開啟TCP SYN cookies,保護服務器避免受syn-flood攻擊,包括服務取決denial-of-service (DoS)
或者分布式服務拒絕distributed denial-of-service (DDoS) (僅適用Red Hat
Enterprise Linux AS)
9?關閉路由相關功能
net.ipv4.conf.lo.accept_source_route=0
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.eth0.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
net.ipv4.conf.lo.accept_redirects=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.eth0.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.lo.secure_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.eth0.secure_redirects=0
net.ipv4.conf.default.secure_redirects=0
net.ipv4.conf.lo.send_redirects=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.eth0.send_redirects=0
net.ipv4.conf.default.send_redirects=0
/proc/sys/net/ipv4/*/secure_redirects
其實所謂的“安全重定向”就是只接受來自網關的“重定向”icmp包。該參數就是
用來設置“安全重定向”功能的。參數值為布爾值,1表示啟用,0表示禁止,缺省值
為啟用。
send_redirects - 布爾類型
如果是router,發送重定向消息,默認值是TRUE
accept_redirects - 布爾類型
收發接收ICMP重定向消息。對于主機來說默認為True,對于用作路由器時默認值為False。
·以下命令使服務器忽略來自被列入網關的服務器的重定向。因重定向可以被用來進行攻擊,所以我們只接受有可靠來源的重定向。
另
外,你可以配置接受或拒絕任何ICMP重定向。ICMP重定向是路由器傳輸路由信息的機制。比如,當網關接收到來自所接網絡主機的Internet數據報
時,網關可以發送重定向信息到一臺主機。網關檢查路由表獲得下一個網關的地址,第二個網關將數據報路由到目標網絡.關閉這些重定向得命令如下:
·如果這個服務器不是一臺路由器,那么它不會發送重定向,所以可以關閉該功能:
10?優化TCP接收/發送緩沖區
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
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則不受該值影響。
tcp_wmem - 三個整數的向量: min, default, max
min:為TCP socket預留用于發送緩沖的內存最小值。每個tcp
socket都可以在建議以后都可以使用它。默認值為4K。
default:為TCP
socket預留用于發送緩沖的內存數量,默認情況下該值會影響其它協議使用的net.core.wmem_default
值,一般要低于net.core.wmem_default的值。默認值為16K。
max: 用于TCP
socket發送緩沖的內存最大值。該值不會影響net.core.wmem_max,今天選擇參數SO_SNDBUF則不受該值影響。默認值為128K。
tcp_rmem - 三個整數的向量: min, default, max
min:為TCP socket預留用于接收緩沖的內存數量,即使在內存出現緊張情況下tcp
socket都至少會有這么多數量的內存用于接收緩沖,默認值為8K。
default:為TCP socket預留用于接收緩沖的內存數量,默認情況下該值影響其它協議使用的
net.core.wmem_default
值。該值決定了在tcp_adv_win_scale、tcp_app_win和tcp_app_win:0是默認值情況下,tcp
窗口大小為65535。
max:用于TCP
socket接收緩沖的內存最大值。該值不會影響 net.core.wmem_max,今天選擇參數
SO_SNDBUF則不受該值影響。默認值為 128K。默認值為87380*2 bytes。
11,
配置服務器拒絕接受廣播風暴或者smurf 攻擊attacks:
12,
·有些路由器針對廣播禎發送無效的回應,每個都產生警告并在內核產生日志.這些回應可以被忽略:
13,
# don't cache ssthresh from previous
connection?net.ipv4.tcp_no_metrics_save = 114,# Increase the maximum number of
skb-heads to be cachednet.core.hot_list_length = 25615,# Increase
the tcp-time-wait buckets pool sizenet.ipv4.tcp_max_tw_buckets =
36000016# Lower syn retry ratesnet.ipv4.tcp_synack_retries =
2net.ipv4.tcp_syn_retries = 317,# Set TCP Re-Ordering value in
kernel to ‘5′net.ipv4.tcp_reordering = 5
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的linux系统网络对时,Linux系统网络优化【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 适马新款 23mm f / 1.4 AP
- 下一篇: 安装linux并卸载windows,如何