Linux调优方案,sysctl.conf的设置
$ /proc/sys/net/core/wmem_max
最大socket寫buffer,可參考的優(yōu)化值:873200
$ /proc/sys/net/core/rmem_max
最大socket讀buffer,可參考的優(yōu)化值:873200
$ /proc/sys/net/ipv4/tcp_wmem
TCP寫buffer,可參考的優(yōu)化值:32768 436600 873200
$ /proc/sys/net/ipv4/tcp_rmem
TCP讀buffer,可參考的優(yōu)化值:32768 436600 873200
$ /proc/sys/net/ipv4/tcp_mem
同樣有3個值,意思是:
net.ipv4.tcp_mem[0]:低于此值,TCP沒有內(nèi)存壓力.
net.ipv4.tcp_mem[1]:在此值下,進入內(nèi)存壓力階段.
net.ipv4.tcp_mem[2]:高于此值,TCP拒絕分配socket.
上述內(nèi)存單位是頁,而不是字節(jié).可參考的優(yōu)化值是:786432 1048576 1572864
$ /proc/sys/net/core/netdev_max_backlog
進入包的最大設備隊列.默認是1000,對重負載服務器而言,該值太低,可調(diào)整到16384.
$ /proc/sys/net/core/somaxconn
listen()的默認參數(shù),掛起請求的最大數(shù)量.默認是128.對繁忙的服務器,增加該值有助于網(wǎng)絡性能.可調(diào)整到8192.
$ /proc/sys/net/core/optmem_max
socket buffer的最大初始化值,默認10K(10240).也可調(diào)整到20k(20480).但建議保留不變
$ /proc/sys/net/ipv4/tcp_max_syn_backlog
進入SYN包的最大請求隊列.默認1024.對重負載服務器,增加該值顯然有好處.可調(diào)整到16384.
$ /proc/sys/net/ipv4/tcp_retries2
TCP失敗重傳次數(shù),默認值15,意味著重傳15次才徹底放棄.可減少到5,以盡早釋放內(nèi)核?資源.
$ /proc/sys/net/ipv4/tcp_keepalive_time
$ /proc/sys/net/ipv4/tcp_keepalive_intvl
$ /proc/sys/net/ipv4/tcp_keepalive_probes
這3個參數(shù)與TCP KeepAlive有關.默認值是:tcp_keepalive_time = 7200 seconds (2 hours)
tcp_keepalive_probes = 9
tcp_keepalive_intvl = 75 seconds意思是如果某個TCP連接在idle 2個小時后,內(nèi)核才發(fā)起probe.如果probe 9次(每次75秒)不成功,內(nèi)核才徹底放棄,認為該連接已失效.對服務器而言,顯然上述值太大. 可調(diào)整到:
/proc/sys/net/ipv4/tcp_keepalive_time 1800
/proc/sys/net/ipv4/tcp_keepalive_probes 3
/proc/sys/net/ipv4/tcp_keepalive_intvl 30
$ proc/sys/net/ipv4/ip_local_port_range
指定端口范圍的一個配置,默認是32768 61000.可調(diào)整為1024 65535.----------
net.ipv4.tcp_syncookies = 1
表示開啟SYN Cookies。當出現(xiàn)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,表示關閉。
net.ipv4.tcp_fin_timeout = 30
表示如果套接字由本端要求關閉,這個參數(shù)決定了它保持在FIN-WAIT-2狀態(tài)的時間。
net.ipv4.tcp_keepalive_time= 1200
表示當keepalive起用的時候,TCP發(fā)送keepalive消息的頻度。缺省是2小時,改為20分鐘。
net.ipv4.ip_local_port_range = 1024 65535
表示用于向外連接的端口范圍。缺省情況下過窄:32768到61000,改為1024到65535。
net.ipv4.tcp_max_syn_backlog = 16384
表示SYN隊列的長度,默認為1024,加大隊列長度為8192,可以容納更多等待連接的網(wǎng)絡連接數(shù)。
net.ipv4.tcp_max_tw_buckets = 180000
表示系統(tǒng)同時保持TIME_WAIT套接字的最大數(shù)量,如果超過這個數(shù)字,TIME_WAIT套接字將立刻被清除并打印警告信息。默認為180000,可適當增大該值,但不建議減小。對于Apache、Nginx等服務器,以上幾行參數(shù)的設置可以很好地減少TIME_WAIT套接字數(shù)量,但是對于Squid,效果卻不大。此項參數(shù)可以控制TIME_WAIT套接字的最大數(shù)量,避免Squid服務器被大量的TIME_WAIT套接字拖死。 參考:http://blog.sina.cn/dpool/blog/s/blog_541086000100skq0.html?vt=4?proc/sys/net/ipv4/下各項的意義參考:http://blog.chinaunix.net/space.php?uid=20423817&do=blog&id=1682374?網(wǎng)站加速:服務器篇 一些實用tips的整理 **************************************************************************************************************
轉(zhuǎn)載自:http://bbs.chinaunix.net/thread-2318039-1-1.html
問題表現(xiàn)就是epoll這個服務端對10000的并發(fā)請求處理特別慢,甚至還出現(xiàn)很多客戶連接超時的情況!但是順序的一個個請求卻沒有問題。
測試如下:
首先是1個進程,順序10000個請求。服務端沒問題,很快速完成。
然后是10000個進程,每個進程1個請求,開始都還正常,可是過一會服務端accept就阻塞了,大概有1-2s,之后又返回,有時候還會出現(xiàn)客戶端連接超時的問題,但是這樣測30章那個線程池(300個線程)的服務端代碼,不管怎么測都不會有問題。
按理說accept應該能一直返回才對呀,為什么中途會阻塞呢?是內(nèi)核參數(shù)問題?
之前也試過把listenfd也添加到epoll里,listenfd不是ET模式。也有這樣的問題。
分析了很多可能:
? epoll本身處理效率的問題(這個自己都不信)
? 服務端完成客戶的處理請求太耗時,導致沒有時間讓accept返回其他客戶連接(這是個最簡單的處理,應該也不會)
? 單臺機器測試,所以產(chǎn)生了太多的TIME_WAIT導致客戶無法連接導致超時(之前以為是這個原因)
? 內(nèi)核的一些限制問題,服務端不能同時處理太多連接(可能的原因)
最終才發(fā)現(xiàn)真正原因!!!
原來上面這個服務器代碼listen指定的backlog連接完成隊列參數(shù)太小,只有32,導致高并發(fā)的時候,服務器的連接完成隊列在極短的時間內(nèi)被填滿了,而accept的處理速度跟不上隊列填滿的速度,導致隊列始終是滿的,然后就不理會客戶的其他連接請求,導致了客戶connect超時,并且處理效率低下。
而線程池的backlog有1024,不過受限于內(nèi)核參數(shù)的默認值最大128,所以線程池這個的backlog實際是128(見man listen),再加上300個線程,每個線程獨自accpet,所以能很快從完成隊列中取得連接,客戶的connect也不會超時了,如果把線程數(shù)改為1個,客戶連接也會超時。
詳細信息可以man listen 同時man tcp 里面有很多限制對服務器來說需要改的。
一般設置:
1 #sudo vi /etc/sysctl.conf
#在最后面編輯添加以下內(nèi)容:
#缺省socket寫buffer,可參考的優(yōu)化值:873200/1746400/3492800
net.core.wmem_default = 1746400
#最大socket寫buffer,可參考的優(yōu)化值:1746400/3492800/6985600
net.core.wmem_max = 3492800
#缺省socket讀buffer,可參考的優(yōu)化值:873200/1746400/3492800
net.core.rmem_default = 1746400
#最大socket讀buffer,可參考的優(yōu)化值:1746400/3492800/6985600
net.core.rmem_max = 3492800
#進入包的最大設備隊列.默認是1000,對重負載服務器而言,該值太低,可調(diào)整到16384/32768/65535
net.core.netdev_max_backlog = 32768
#listen()的默認參數(shù),掛起請求的最大數(shù)量.默認是128.對繁忙的服務器,增加該值有助于網(wǎng)絡性能.可調(diào)整到8192/16384/32768
net.core.somaxconn = 16384
#每個socket buffer的最大補助緩存大小,默認10K(10240),也可調(diào)整到20k(20480),但建議保留
net.core.optmem_max = 10240
#表示用于向外連接的端口范圍.缺省情況下過窄:32768到61000,改為1024到65535
net.ipv4.ip_local_port_range = 1024 65535
#TCP寫buffer,可參考的優(yōu)化值:873200/1746400/3492800/6985600
net.ipv4.tcp_wmem = 873200 1746400 3492800
#TCP讀buffer,可參考的優(yōu)化值:873200/1746400/3492800/6985600
net.ipv4.tcp_rmem = 873200 1746400 3492800
#net.ipv4.tcp_mem[0]:低于此值,TCP沒有內(nèi)存壓力.
#net.ipv4.tcp_mem[1]:在此值下,進入內(nèi)存壓力階段.
#net.ipv4.tcp_mem[2]:高于此值,TCP拒絕分配socket.
#上述內(nèi)存單位是頁,而不是字節(jié).可參考的優(yōu)化值是:78643200/104857600/157286400
net.ipv4.tcp_mem = 78643200 104857600 157286400
#進入SYN包的最大請求隊列.默認1024.對重負載服務器,增加該值顯然有好處.可調(diào)整到16384/32768/65535
net.ipv4.tcp_max_syn_backlog = 32768
#TCP失敗重傳次數(shù),默認值15,意味著重傳15次才徹底放棄.可減少到5,以盡早釋放內(nèi)核資源
net.ipv4.tcp_retries2 = 5
#以下3個參數(shù)與TCP KeepAlive有關.默認值是:
#tcp_keepalive_time = 7200 seconds (2 hours)
#tcp_keepalive_probes = 9
#tcp_keepalive_intvl = 75 seconds
#意思是如果某個TCP連接在idle 2個小時后,內(nèi)核才發(fā)起probe.如果probe 9次(每次75秒)不成功,內(nèi)核才徹底放棄,認為該連接已失效
#對服務器而言,顯然上述值太大.可調(diào)整到:
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 30
#表示開啟SYN Cookies,當出現(xiàn)SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,默認為0,表示關閉
net.ipv4.tcp_syncookies = 1
#表示如果套接字由本端要求關閉,這個參數(shù)決定了它保持在FIN-WAIT-2狀態(tài)的時間
net.ipv4.tcp_fin_timeout = 30
#表示開啟重用,允許將TIME-WAIT sockets重新用于新的TCP連接,默認為0,表示關閉
#net.ipv4.tcp_tw_reuse = 1
#表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉
#net.ipv4.tcp_tw_recycle = 1
#表示系統(tǒng)同時保持TIME_WAIT套接字的最大數(shù)量,如果超過這個數(shù)字,TIME_WAIT套接字將立刻被清除并打印警告信息
#默認為180000,建議使用默認值,不建議調(diào)小
#net.ipv4.tcp_max_tw_buckets = 180000
#其它的一些設置
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_synack_retries = 2
保存退出:
2 #sudo /sbin/sysctl -p
***************************************************************************************
Proc 系統(tǒng)優(yōu)化
http://www.chinaunix.net/jh/4/766494.html
http://www.cnblogs.com/happyhotty/articles/2044049.html
轉(zhuǎn)載自:http://www.linuxidc.com/Linux/2007-08/6995.htm一、前言
具體優(yōu)化策略需要根據(jù)實際情況進行調(diào)整;本文檔將在以下幾個方面來闡述如何針對RedHat Enterprise Linux進行性能優(yōu)化。
1) Linux Proc文件系統(tǒng),通過對Proc文件系統(tǒng)進行調(diào)整,達到性能優(yōu)化的目的。
2) Linux性能診斷工具,介紹如何使用Linux自帶的診斷工具進行性能診斷。
二、/proc/sys/kernel/優(yōu)化
1) /proc/sys/kernel/ctrl-alt-del
該文件有一個二進制值,該值控制系統(tǒng)在接收到ctrl+alt+delete按鍵組合時如何反應。這兩個值分別是:
零(0)值,表示捕獲ctrl+alt+delete,并將其送至 init 程序;這將允許系統(tǒng)可以安全地關閉和重啟,就好象輸入shutdown命令一樣。
壹(1)值,表示不捕獲ctrl+alt+delete,將執(zhí)行非正常的關閉,就好象直接關閉電源一樣。
缺省設置:0
建議設置:1,防止意外按下ctrl+alt+delete導致系統(tǒng)非正常重啟。
2) proc/sys/kernel/msgmax
該文件指定了從一個進程發(fā)送到另一個進程的消息的最大長度(bytes)。進程間的消息傳遞是在內(nèi)核的內(nèi)存中進行的,不會交換到磁盤上,所以如果增加該值,則將增加操作系統(tǒng)所使用的內(nèi)存數(shù)量。
缺省設置:8192
3) /proc/sys/kernel/msgmnb
該文件指定一個消息隊列的最大長度(bytes)。
缺省設置:16384
4) /proc/sys/kernel/msgmni
該文件指定消息隊列標識的最大數(shù)目,即系統(tǒng)范圍內(nèi)最大多少個消息隊列。
缺省設置:16
5) /proc/sys/kernel/panic
該文件表示如果發(fā)生“內(nèi)核嚴重錯誤(kernel panic)”,則內(nèi)核在重新引導之前等待的時間(以秒為單位)。
零(0)秒,表示在發(fā)生內(nèi)核嚴重錯誤時將禁止自動重新引導。
缺省設置:0
6) proc/sys/kernel/shmall
該文件表示在任何給定時刻,系統(tǒng)上可以使用的共享內(nèi)存的總量(bytes)。
缺省設置:2097152
7) /proc/sys/kernel/shmmax
該文件表示內(nèi)核所允許的最大共享內(nèi)存段的大小(bytes)。
缺省設置:33554432
建議設置:物理內(nèi)存 * 50%
實際可用最大共享內(nèi)存段大小=shmmax * 98%,其中大約2%用于共享內(nèi)存結構。
可以通過設置shmmax,然后執(zhí)行ipcs -l來驗證。
8) /proc/sys/kernel/shmmni
該文件表示用于整個系統(tǒng)的共享內(nèi)存段的最大數(shù)目(個)。
缺省設置:4096
9) /proc/sys/kernel/threads-max
該文件表示內(nèi)核所能使用的線程的最大數(shù)目。
缺省設置:2048
10) /proc/sys/kernel/sem
該文件用于控制內(nèi)核信號量,信號量是System VIPC用于進程間通訊的方法。
建議設置:250 32000 100 128
第一列,表示每個信號集中的最大信號量數(shù)目。
第二列,表示系統(tǒng)范圍內(nèi)的最大信號量總數(shù)目。
第三列,表示每個信號發(fā)生時的最大系統(tǒng)操作數(shù)目。
第四列,表示系統(tǒng)范圍內(nèi)的最大信號集總數(shù)目。
所以,(第一列)*(第四列)=(第二列)
以上設置,可以通過執(zhí)行ipcs -l來驗證。
11) 待續(xù)。。。
三、/proc/sys/vm/優(yōu)化
1) /proc/sys/vm/block_dump
該文件表示是否打開Block Debug模式,用于記錄所有的讀寫及Dirty Block寫回動作。
缺省設置:0,禁用Block Debug模式
2) /proc/sys/vm/dirty_background_ratio
該文件表示臟數(shù)據(jù)到達系統(tǒng)整體內(nèi)存的百分比,此時觸發(fā)pdflush進程把臟數(shù)據(jù)寫回磁盤。
缺省設置:10
3) /proc/sys/vm/dirty_expire_centisecs
該文件表示如果臟數(shù)據(jù)在內(nèi)存中駐留時間超過該值,pdflush進程在下一次將把這些數(shù)據(jù)寫回磁盤。
缺省設置:3000(1/100秒)
4) /proc/sys/vm/dirty_ratio
該文件表示如果進程產(chǎn)生的臟數(shù)據(jù)到達系統(tǒng)整體內(nèi)存的百分比,此時進程自行把臟數(shù)據(jù)寫回磁盤。
缺省設置:40
5) /proc/sys/vm/dirty_writeback_centisecs
該文件表示pdflush進程周期性間隔多久把臟數(shù)據(jù)寫回磁盤。
缺省設置:500(1/100秒)
6) /proc/sys/vm/vfs_cache_pressure
該文件表示內(nèi)核回收用于directory和inode cache內(nèi)存的傾向;缺省值100表示內(nèi)核將根據(jù)pagecache和swapcache,把directory和inode cache保持在一個合理的百分比;降低該值低于100,將導致內(nèi)核傾向于保留directory和inode cache;增加該值超過100,將導致內(nèi)核傾向于回收directory和inode cache。
缺省設置:100
7) /proc/sys/vm/min_free_kbytes
該文件表示強制Linux VM最低保留多少空閑內(nèi)存(Kbytes)。
缺省設置:724(512M物理內(nèi)存)
8) /proc/sys/vm/nr_pdflush_threads
該文件表示當前正在運行的pdflush進程數(shù)量,在I/O負載高的情況下,內(nèi)核會自動增加更多的pdflush進程。
缺省設置:2(只讀)
9) /proc/sys/vm/overcommit_memory
該文件指定了內(nèi)核針對內(nèi)存分配的策略,其值可以是0、1、2。
0, 表示內(nèi)核將檢查是否有足夠的可用內(nèi)存供應用進程使用;如果有足夠的可用內(nèi)存,內(nèi)存申請允許;否則,內(nèi)存申請失敗,并把錯誤返回給應用進程。
1, 表示內(nèi)核允許分配所有的物理內(nèi)存,而不管當前的內(nèi)存狀態(tài)如何。
2, 表示內(nèi)核允許分配超過所有物理內(nèi)存和交換空間總和的內(nèi)存(參照overcommit_ratio)。
缺省設置:0
10) /proc/sys/vm/overcommit_ratio
該文件表示,如果overcommit_memory=2,可以過載內(nèi)存的百分比,通過以下公式來計算系統(tǒng)整體可用內(nèi)存。
系統(tǒng)可分配內(nèi)存=交換空間+物理內(nèi)存*overcommit_ratio/100
缺省設置:50(%)
11) /proc/sys/vm/page-cluster
該文件表示在寫一次到swap區(qū)的時候?qū)懭氲捻撁鏀?shù)量,0表示1頁,1表示2頁,2表示4頁。
缺省設置:3(2的3次方,8頁)
12) /proc/sys/vm/swapiness
該文件表示系統(tǒng)進行交換行為的程度,數(shù)值(0-100)越高,越可能發(fā)生磁盤交換。
缺省設置:60
13) legacy_va_layout
該文件表示是否使用最新的32位共享內(nèi)存mmap()系統(tǒng)調(diào)用,Linux支持的共享內(nèi)存分配方式包括mmap(),Posix,System VIPC。
0, 使用最新32位mmap()系統(tǒng)調(diào)用。
1, 使用2.4內(nèi)核提供的系統(tǒng)調(diào)用。
缺省設置:0
14) nr_hugepages
該文件表示系統(tǒng)保留的hugetlb頁數(shù)。
15) hugetlb_shm_group
該文件表示允許使用hugetlb頁創(chuàng)建System VIPC共享內(nèi)存段的系統(tǒng)組ID。
16) 待續(xù)。。。
四、/proc/sys/fs/優(yōu)化
1) /proc/sys/fs/file-max
該文件指定了可以分配的文件句柄的最大數(shù)目。如果用戶得到的錯誤消息聲明由于打開文件數(shù)已經(jīng)達到了最大值,從而他們不能打開更多文件,則可能需要增加該值。
缺省設置:4096
建議設置:65536
2) /proc/sys/fs/file-nr
該文件與 file-max 相關,它有三個值:
已分配文件句柄的數(shù)目
已使用文件句柄的數(shù)目
文件句柄的最大數(shù)目
該文件是只讀的,僅用于顯示信息。
3) 待續(xù)。。。
五、/proc/sys/net/core/優(yōu)化
該目錄下的配置文件主要用來控制內(nèi)核和網(wǎng)絡層之間的交互行為。
1) /proc/sys/net/core/message_burst
寫新的警告消息所需的時間(以 1/10 秒為單位);在這個時間內(nèi)系統(tǒng)接收到的其它警告消息會被丟棄。這用于防止某些企圖用消息“淹沒”系統(tǒng)的人所使用的拒絕服務(Denial of Service)攻擊。
缺省設置:50(5秒)
2) /proc/sys/net/core/message_cost
該文件表示寫每個警告消息相關的成本值。該值越大,越有可能忽略警告消息。
缺省設置:5
3) /proc/sys/net/core/netdev_max_backlog
該文件表示在每個網(wǎng)絡接口接收數(shù)據(jù)包的速率比內(nèi)核處理這些包的速率快時,允許送到隊列的數(shù)據(jù)包的最大數(shù)目。
缺省設置:300
4) /proc/sys/net/core/optmem_max
該文件表示每個套接字所允許的最大緩沖區(qū)的大小。
缺省設置:10240
5) /proc/sys/net/core/rmem_default
該文件指定了接收套接字緩沖區(qū)大小的缺省值(以字節(jié)為單位)。
缺省設置:110592
6) /proc/sys/net/core/rmem_max
該文件指定了接收套接字緩沖區(qū)大小的最大值(以字節(jié)為單位)。
缺省設置:131071 7) /proc/sys/net/core/wmem_default
該文件指定了發(fā)送套接字緩沖區(qū)大小的缺省值(以字節(jié)為單位)。
缺省設置:110592
8) /proc/sys/net/core/wmem_max
該文件指定了發(fā)送套接字緩沖區(qū)大小的最大值(以字節(jié)為單位)。
缺省設置:131071
9) 待續(xù)。。。
六、/proc/sys/net/ipv4/優(yōu)化
1) /proc/sys/net/ipv4/ip_forward
該文件表示是否打開IP轉(zhuǎn)發(fā)。
0,禁止
1,轉(zhuǎn)發(fā)
缺省設置:0
2) /proc/sys/net/ipv4/ip_default_ttl
該文件表示一個數(shù)據(jù)報的生存周期(Time To Live),即最多經(jīng)過多少路由器。
缺省設置:64
增加該值會降低系統(tǒng)性能。
3) /proc/sys/net/ipv4/ip_no_pmtu_disc
該文件表示在全局范圍內(nèi)關閉路徑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分段的內(nèi)存分配最低值和最高值,一旦達到最高內(nèi)存分配值,其它分段將被丟棄,直到達到最低內(nèi)存分配值。
缺省設置:196608(ipfrag_low_thresh)
262144(ipfrag_high_thresh)
2) /proc/sys/net/ipv4/ipfrag_time
該文件表示一個IP分段在內(nèi)存中保留多少秒。
缺省設置: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
條目的最大存活期。在此期限到達之后,如果緩沖池沒有耗盡壓力的話(例如:緩沖池中的條目數(shù)目非常少),不使用的條目將會超時。該值以 jiffies為單位測量。
缺省設置:600
4) /proc/sys/net/ipv4/inet_peer_gc_mintime
廢物收集(GC)通過的最短間隔。這個間隔會影響到緩沖池中內(nèi)存的高壓力。 該值以 jiffies為單位測量。
缺省設置:10
5) /proc/sys/net/ipv4/inet_peer_gc_maxtime
廢物收集(GC)通過的最大間隔,這個間隔會影響到緩沖池中內(nèi)存的低壓力。 該值以 jiffies為單位測量。
缺省設置:120
6.3 TCP Variables
1) /proc/sys/net/ipv4/tcp_syn_retries
該文件表示本機向外發(fā)起TCP SYN連接超時重傳的次數(shù),不應該高于255;該值僅僅針對外出的連接,對于進來的連接由tcp_retries1控制。
缺省設置:5
2) /proc/sys/net/ipv4/tcp_keepalive_probes
該文件表示丟棄TCP連接前,進行最大TCP保持連接偵測的次數(shù)。保持連接僅在SO_KEEPALIVE套接字選項被打開時才被發(fā)送。
缺省設置:9(次)
3) /proc/sys/net/ipv4/tcp_keepalive_time
該文件表示從不再傳送數(shù)據(jù)到向連接上發(fā)送保持連接信號之間所需的秒數(shù)。
缺省設置:7200(2小時)
4) /proc/sys/net/ipv4/tcp_keepalive_intvl
該文件表示發(fā)送TCP探測的頻率,乘以tcp_keepalive_probes表示斷開沒有相應的TCP連接的時間。
缺省設置:75(秒)
5) /proc/sys/net/ipv4/tcp_retries1
該文件表示放棄回應一個TCP連接請求前進行重傳的次數(shù)。
缺省設置:3
6) /proc/sys/net/ipv4/tcp_retries2
該文件表示放棄在已經(jīng)建立通訊狀態(tài)下的一個TCP數(shù)據(jù)包前進行重傳的次數(shù)。
缺省設置:15
7) /proc/sys/net/ipv4/tcp_orphan_retries
在近端丟棄TCP連接之前,要進行多少次重試。默認值是 7 個,相當于 50秒–16分鐘,視 RTO 而定。如果您的系統(tǒng)是負載很大的web服務器,那么也許需
要降低該值,這類 sockets 可能會耗費大量的資源。另外參考tcp_max_orphans。
8) /proc/sys/net/ipv4/tcp_fin_timeout
對于本端斷開的socket連接,TCP保持在FIN-WAIT-2狀態(tài)的時間。對方可能
會斷開連接或一直不結束連接或不可預料的進程死亡。默認值為 60 秒。過去在2.2版本的內(nèi)核中是 180 秒。您可以設置該值,但需要注意,如果您的機器為負載很重的web服務器,您可能要冒內(nèi)存被大量無效數(shù)據(jù)報填滿的風險,FIN-WAIT-2 sockets 的危險性低于 FIN-WAIT-1,因為它們最多只吃 1.5K的內(nèi)存,但是它們存在時間更長。另外參考 tcp_max_orphans。
缺省設置:60(秒)
9) /proc/sys/net/ipv4/tcp_max_tw_buckets系統(tǒng)在同時所處理的最大timewait sockets 數(shù)目。如果超過此數(shù)的話,time-wait socket 會被立即砍除并且顯示警告信息。之所以要設定這個限制,純粹為了抵御那些簡單的 DoS 攻擊,千萬不要人為的降低這個限制,不過,如果網(wǎng)絡條件需要比默認值更多,則可以提高它(或許還要增加內(nèi)存)。
缺省設置:180000
10) /proc/sys/net/ipv4/tcp_tw_recyle
打開快速 TIME-WAIT sockets 回收。除非得到技術專家的建議或要求,請不要隨意修改這個值。
缺省設置:0
11) /proc/sys/net/ipv4/tcp_tw_reuse
該文件表示是否允許重新應用處于TIME-WAIT狀態(tài)的socket用于新的TCP連接。
缺省設置:0
12) /proc/sys/net/ipv4/tcp_max_orphans
系統(tǒng)所能處理不屬于任何進程的TCP sockets最大數(shù)量。假如超過這個數(shù)量,那么不屬于任何進程的連接會被立即reset,并同時顯示警告信息。之所以要設定這個限制,純粹為了抵御那些簡單的 DoS 攻擊,千萬不要依賴這個或是人為的降低這個限制。
缺省設置:8192
13) /proc/sys/net/ipv4/tcp_abort_on_overflow
當守護進程太忙而不能接受新的連接,就向?qū)Ψ桨l(fā)送reset消息,默認值是false。這意味著當溢出的原因是因為一個偶然的猝發(fā),那么連接將恢復狀態(tài)。只有在你確信守護進程真的不能完成連接請求時才打開該選項,該選項會影響客戶的使用。
缺省設置:0 14) /proc/sys/net/ipv4/tcp_syncookies
該文件表示是否打開TCP同步標簽(syncookie),內(nèi)核必須打開了 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
對于那些依然還未獲得客戶端確認的連接請求,需要保存在隊列中最大數(shù)目。對于超過 128Mb 內(nèi)存的系統(tǒng),默認值是 1024,低于 128Mb 的則為 128。如果服務器經(jīng)常出現(xiàn)過載,可以嘗試增加這個數(shù)字。警告!假如您將此值設為大于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)則系統(tǒng)將忽略所有發(fā)送給自己的ICMP ECHO請求或那些廣播地址的請求。
缺省設置:1024
17) /proc/sys/net/ipv4/tcp_window_scaling
該文件表示設置tcp/ip會話的滑動窗口大小是否可變。參數(shù)值為布爾值,為1時表示可變,為0時表示不可變。tcp/ip通常使用的窗口最大可達到 65535 字節(jié),對于高速網(wǎng)絡,該值可能太小,這時候如果啟用了該功能,可以使tcp/ip滑動窗口大小增大數(shù)個數(shù)量級,從而提高數(shù)據(jù)傳輸?shù)哪芰Α?br /> 缺省設置:1
18) /proc/sys/net/ipv4/tcp_sack
該文件表示是否啟用有選擇的應答(Selective Acknowledgment),這可以通過有選擇地應答亂序接收到的報文來提高性能(這樣可以讓發(fā)送者只發(fā)送丟失的報文段);(對于廣域網(wǎng)通信來說)這 個選項應該啟用,但是這會增加對 CPU 的占用。
缺省設置:1
19) /proc/sys/net/ipv4/tcp_timestamps
該文件表示是否啟用以一種比超時重發(fā)更精確的方法(請參閱 RFC 1323)來啟用對 RTT 的計算;為了實現(xiàn)更好的性能應該啟用這個選項。
缺省設置:1
20) /proc/sys/net/ipv4/tcp_fack
該文件表示是否打開FACK擁塞避免和快速重傳功能。
缺省設置:1
21) /proc/sys/net/ipv4/tcp_dsack
該文件表示是否允許TCP發(fā)送“兩個完全相同”的SACK。
缺省設置:1
22) /proc/sys/net/ipv4/tcp_ecn
該文件表示是否打開TCP的直接擁塞通告功能。
缺省設置:0
23) /proc/sys/net/ipv4/tcp_reordering
該文件表示TCP流中重排序的數(shù)據(jù)報最大數(shù)量。
缺省設置:3 24) /proc/sys/net/ipv4/tcp_retrans_collapse
該文件表示對于某些有bug的打印機是否提供針對其bug的兼容性。
缺省設置:1
25) /proc/sys/net/ipv4/tcp_wmem
該文件包含3個整數(shù)值,分別是:min,default,max
Min:為TCP socket預留用于發(fā)送緩沖的內(nèi)存最小值。每個TCP socket都可以使用它。
Default:為TCP socket預留用于發(fā)送緩沖的內(nèi)存數(shù)量,默認情況下該值會影響其它協(xié)議使用的net.core.wmem中default的 值,一般要低于net.core.wmem中default的值。
Max:為TCP socket預留用于發(fā)送緩沖的內(nèi)存最大值。該值不會影響net.core.wmem_max,今天選擇參數(shù)SO_SNDBUF則不受該值影響。默認值為 128K。
缺省設置:4096 16384 131072
26) /proc/sys/net/ipv4/tcp_rmem
該文件包含3個整數(shù)值,分別是:min,default,max
Min:為TCP socket預留用于接收緩沖的內(nèi)存數(shù)量,即使在內(nèi)存出現(xiàn)緊張情況下TCP socket都至少會有這么多數(shù)量的內(nèi)存用于接收緩沖。
Default:為TCP socket預留用于接收緩沖的內(nèi)存數(shù)量,默認情況下該值影響其它協(xié)議使用的 net.core.wmem中default的 值。該值決定了在tcp_adv_win_scale、tcp_app_win和tcp_app_win的默認值情況下,TCP 窗口大小為65535。
Max:為TCP socket預留用于接收緩沖的內(nèi)存最大值。該值不會影響 net.core.wmem中max的值,今天選擇參數(shù) SO_SNDBUF則不受該值影響。
缺省設置:4096 87380 174760
27) /proc/sys/net/ipv4/tcp_mem
該文件包含3個整數(shù)值,分別是:low,pressure,high
Low:當TCP使用了低于該值的內(nèi)存頁面數(shù)時,TCP不會考慮釋放內(nèi)存。
Pressure:當TCP使用了超過該值的內(nèi)存頁面數(shù)量時,TCP試圖穩(wěn)定其內(nèi)存使用,進入pressure模式,當內(nèi)存消耗低于low值時則退出 pressure狀態(tài)。
High:允許所有tcp sockets用于排隊緩沖數(shù)據(jù)報的頁面量。
一般情況下這些值是在系統(tǒng)啟動時根據(jù)系統(tǒng)內(nèi)存數(shù)量計算得到的。
缺省設置:24576 32768 49152
28) /proc/sys/net/ipv4/tcp_app_win
該文件表示保留max(window/2^tcp_app_win, mss)數(shù)量的窗口由于應用緩沖。當為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 <= 0)。
缺省設置:2
6.4 IP Variables
1) /proc/sys/net/ipv4/ip_local_port_range
該文件表示TCP/UDP協(xié)議打開的本地端口號。
缺省設置:1024 4999
建議設置:32768 61000
2) /proc/sys/net/ipv4/ip_nonlocal_bind
該文件表示是否允許進程邦定到非本地地址。
缺省設置:0
3) /proc/sys/net/ipv4/ip_dynaddr
該參數(shù)通常用于使用撥號連接的情況,可以使系統(tǒng)動能夠立即改變ip包的源地址為該ip地址,同時中斷原有的tcp對話而用新地址重新發(fā)出一個syn請求 包,開始新的tcp對話。在使用ip欺騙時,該參數(shù)可以立即改變偽裝地址為新的ip地址。該文件表示是否允許動態(tài)地址,如果該值非0,表示允許;如果該值 大于1,內(nèi)核將通過log記錄動態(tài)地址重寫信息。
缺省設置:0
4) /proc/sys/net/ipv4/icmp_echo_ignore_all/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
該文件表示內(nèi)核是否忽略所有的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標準,其對廣播幀發(fā)送偽造的響應來應答。這種違背行為通常會被以告警的方式記錄在系統(tǒng)日志中。如果該選項設置為True,內(nèi)核不會記錄這種警告信息。
缺省設置:0
8) /proc/sys/net/ipv4/igmp_max_memberships
該文件表示多播組中的最大成員數(shù)量。
缺省設置:20 6.5 Other Configuration
1) /proc/sys/net/ipv4/confaccept_source_route
是否接受含有源路由信息的ip包。參數(shù)值為布爾值,1表示接受,0表示不接受。在充當網(wǎng)關的linux主機上缺省值為1,在一般的linux主機上缺省值為0。從安全性角度出發(fā),建議關閉該功能。
3) /proc/sys/net/ipv4proxy_arp
設置是否對網(wǎng)絡上的arp包進行中繼。參數(shù)值為布爾值,1表示中繼,0表示忽略,
缺省值為0。該參數(shù)通常只對充當路由器的linux主機有用。
七、性能優(yōu)化策略
7.1 基本優(yōu)化
1) 關閉后臺守護進程
系統(tǒng)安裝完后,系統(tǒng)會默認啟動一些后臺守護進程,有些進程并不是必需的;因此,關閉這些進程可以節(jié)省一部分物理內(nèi)存消耗。以root身份登錄系統(tǒng),運行ntsysv,選中如下進程:
iptables
network
syslog
random
apmdxinetd
vsftpd
crond
local
修改完后,重新啟動系統(tǒng)。
如此,系統(tǒng)將僅僅啟動選中的這些守護進程。
2) 減少終端連接數(shù)
系統(tǒng)默認啟動6個終端,而實際上只需啟動3個即可;以root身份登錄系統(tǒng),運行vi /etc/inittab,修改成如下:
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6
如上所述,注釋掉4、5、6終端。
3) 待續(xù)。。。
7.2網(wǎng)絡優(yōu)化
1) 優(yōu)化系統(tǒng)套接字緩沖區(qū)
net.core.rmem_max=16777216
net.core.wmem_max=16777216
2) 優(yōu)化TCP接收/發(fā)送緩沖區(qū)
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
3) 優(yōu)化網(wǎng)絡設備接收隊列
net.core.netdev_max_backlog=3000
4) 關閉路由相關功能
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=0r /> 5) 優(yōu)化TCP協(xié)議棧
打開TCP SYN cookie選項,有助于保護服務器免受SyncFlood攻擊。
net.ipv4.tcp_syncookies=1
打開TIME-WAIT套接字重用功能,對于存在大量連接的Web服務器非常有效。
net.ipv4.tcp_tw_recyle=1
net.ipv4.tcp_tw_reuse=1
減少處于FIN-WAIT-2連接狀態(tài)的時間,使系統(tǒng)可以處理更多的連接。
net.ipv4.tcp_fin_timeout=30
減少TCP KeepAlive連接偵測的時間,使系統(tǒng)可以處理更多的連接。
net.ipv4.tcp_keepalive_time=1800
增加TCP SYN隊列長度,使系統(tǒng)可以處理更多的并發(fā)連接。
net.ipv4.tcp_max_syn_backlog=8192
總結
以上是生活随笔為你收集整理的Linux调优方案,sysctl.conf的设置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux系统中sysctl命令详解 s
- 下一篇: LINUX ulimit命令