Natlive's blog

          A long way and dream.

           

          最完整的sysctl.conf優(yōu)化方案[轉(zhuǎn)]

          網(wǎng)上關(guān)于sysctl.conf的優(yōu)化方案有各種版本,大多都是抄來(lái)抄去的,讓新人看了很迷茫。為解決此問(wèn)題,經(jīng)過(guò)兩天的整理,查了N多資料,將大家常用的總結(jié)如下,很多默認(rèn)的不需要修改的暫未涉及,今后將逐步把所有的項(xiàng)目都有個(gè)翻譯、講解、修改建議,如有修改,將以此文為準(zhǔn),其他地方的內(nèi)容,本人不負(fù)責(zé)更新。因此轉(zhuǎn)載請(qǐng)注明鏈接地址:http://www.bsdlover.cn/security/2007/1216/article_8.html如果您有補(bǔ)充或修訂意見(jiàn),請(qǐng)于本文后評(píng)論或郵件聯(lián)系cujxtm@gmail.com,萬(wàn)分感謝!

          ###################
          所有rfc相關(guān)的選項(xiàng)都是默認(rèn)啟用的,因此網(wǎng)上的那些還自己寫(xiě)rfc支持的都可以扔掉了:)
          ###############################

          net.inet.ip.sourceroute=0
          net.inet.ip.accept_sourceroute=0
          #############################
          通過(guò)源路由,攻擊者可以嘗試到達(dá)內(nèi)部IP地址 --包括RFC1918中的地址,所以
          不接受源路由信息包可以防止你的內(nèi)部網(wǎng)絡(luò)被探測(cè)。
          #################################

          net.inet.tcp.drop_synfin=1
          ###################################
          安全參數(shù),編譯內(nèi)核的時(shí)候加了options TCP_DROP_SYNFIN才可以用,可以阻止某些OS探測(cè)。
          ##################################

          kern.maxvnodes=8446
          #################http://www.bsdlover.cn#########
          vnode 是對(duì)文件或目錄的一種內(nèi)部表達(dá)。 因此, 增加可以被操作系統(tǒng)利用的 vnode 數(shù)量將降低磁盤(pán)的 I/O。
          一般而言, 這是由操作系統(tǒng)自行完成的,也不需要加以修改。但在某些時(shí)候磁盤(pán) I/O 會(huì)成為瓶頸,
          而系統(tǒng)的 vnode 不足, 則這一配置應(yīng)被增加。此時(shí)需要考慮是非活躍和空閑內(nèi)存的數(shù)量。
          要查看當(dāng)前在用的 vnode 數(shù)量:
          # sysctl vfs.numvnodes
          vfs.numvnodes: 91349
          要查看最大可用的 vnode 數(shù)量:
          # sysctl kern.maxvnodes
          kern.maxvnodes: 100000
          如果當(dāng)前的 vnode 用量接近最大值,則將 kern.maxvnodes 值增大 1,000 可能是個(gè)好主意。
          您應(yīng)繼續(xù)查看 vfs.numvnodes 的數(shù)值, 如果它再次攀升到接近最大值的程度,
          仍需繼續(xù)提高 kern.maxvnodes。 在 top(1) 中顯示的內(nèi)存用量應(yīng)有顯著變化,
          更多內(nèi)存會(huì)處于活躍 (active) 狀態(tài)。
          ####################################


          kern.maxproc: 964
          #################http://www.bsdlover.cn#########
          Maximum number of processes
          ####################################
          kern.maxprocperuid: 867
          #################http://www.bsdlover.cn#########
          Maximum processes allowed per userid
          ####################################
          因?yàn)槲业膍axusers設(shè)置的是256,20+16*maxusers=4116。
          maxprocperuid至少要比maxproc少1,因?yàn)閕nit(8) 這個(gè)系統(tǒng)程序絕對(duì)要保持在運(yùn)作狀態(tài)。
          我給它設(shè)置的2068。


          kern.maxfiles: 1928
          #################http://www.bsdlover.cn#########
          系統(tǒng)中支持最多同時(shí)開(kāi)啟的文件數(shù)量,如果你在運(yùn)行數(shù)據(jù)庫(kù)或大的很吃描述符的進(jìn)程,那么應(yīng)該設(shè)置在20000以上,
          比如kde這樣的桌面環(huán)境,它同時(shí)要用的文件非常多。
          一般推薦設(shè)置為32768或者65536。
          ####################################

          kern.argmax: 262144
          #################http://www.bsdlover.cn#########
          maximum number of bytes (or characters) in an argument list.
          命令行下最多支持的參數(shù),比如你在用find命令來(lái)批量刪除一些文件的時(shí)候
          find . -name "*.old" -delete,如果文件數(shù)超過(guò)了這個(gè)數(shù)字,那么會(huì)提示你數(shù)字太多的。
          可以利用find . -name "*.old" -ok rm {} \;來(lái)刪除。
          默認(rèn)的參數(shù)已經(jīng)足夠多了,因此不建議再做修改。
          ####################################

          kern.securelevel: -1
          #################http://www.bsdlover.cn#########
          -1:這是系統(tǒng)默認(rèn)級(jí)別,沒(méi)有提供任何內(nèi)核的保護(hù)錯(cuò)誤;
          0:基本上作用不多,當(dāng)你的系統(tǒng)剛啟動(dòng)就是0級(jí)別的,當(dāng)進(jìn)入多用戶(hù)模式的時(shí)候就自動(dòng)變成1級(jí)了。
          1:在這個(gè)級(jí)別上,有如下幾個(gè)限制:
            a. 不能通過(guò)kldload或者kldunload加載或者卸載可加載內(nèi)核模塊;
            b. 應(yīng)用程序不能通過(guò)/dev/mem或者/dev/kmem直接寫(xiě)內(nèi)存;
            c. 不能直接往已經(jīng)裝在(mounted)的磁盤(pán)寫(xiě)東西,也就是不能格式化磁盤(pán),但是可以通過(guò)標(biāo)準(zhǔn)的內(nèi)核接口執(zhí)行寫(xiě)操作;
            d. 不能啟動(dòng)X-windows,同時(shí)不能使用chflags來(lái)修改文件屬性;
          2:在 1 級(jí)別的基礎(chǔ)上還不能寫(xiě)沒(méi)裝載的磁盤(pán),而且不能在1秒之內(nèi)制造多次警告,這個(gè)是防止DoS控制臺(tái)的;
          3:在 2 級(jí)別的級(jí)別上不允許修改IPFW防火墻的規(guī)則。
            如果你已經(jīng)裝了防火墻,并且把規(guī)則設(shè)好了,不輕易改動(dòng),那么建議使用3級(jí)別,如果你沒(méi)有裝防火墻,而且還準(zhǔn)備裝防火墻的話,不建議使用。
          我們這里推薦使用 2 級(jí)別,能夠避免比較多對(duì)內(nèi)核攻擊。
          ####################################

          kern.maxfilesperproc: 1735
          #################http://www.bsdlover.cn#########
          每個(gè)進(jìn)程能夠同時(shí)打開(kāi)的最大文件數(shù)量,網(wǎng)上很多資料寫(xiě)的是32768
          除非用異步I/O或大量線程,打開(kāi)這么多的文件恐怕是不太正常的。
          我個(gè)人建議不做修改,保留默認(rèn)。
          ####################################


          kern.ipc.maxsockbuf: 262144
          #################http://www.bsdlover.cn#########
          最大的套接字緩沖區(qū),網(wǎng)上有建議設(shè)置為2097152(2M)、8388608(8M)的。
          我個(gè)人倒是建議不做修改,保持默認(rèn)的256K即可,緩沖區(qū)大了可能造成碎片、阻塞或者丟包。
          ####################################


          kern.ipc.somaxconn: 128
          #################http://www.bsdlover.cn#########
          最大的等待連接完成的套接字隊(duì)列大小,即并發(fā)連接數(shù)。
          高負(fù)載服務(wù)器和受到Dos攻擊的系統(tǒng)也許會(huì)因?yàn)檫@個(gè)隊(duì)列被塞滿(mǎn)而不能提供正常服務(wù)。
          默認(rèn)為128,推薦在1024-4096之間,根據(jù)機(jī)器和實(shí)際情況需要改動(dòng),數(shù)字越大占用內(nèi)存也越大。
          ####################################


          kern.ipc.nmbclusters: 4800
          #################http://www.bsdlover.cn#########
          這個(gè)值用來(lái)調(diào)整系統(tǒng)在開(kāi)機(jī)后所要分配給網(wǎng)絡(luò) mbufs 的 cluster 數(shù)量,
          由于每個(gè) cluster 大小為 2K,所以當(dāng)這個(gè)值為 1024 時(shí),也是會(huì)用到 2MB 的核心內(nèi)存空間。
          假設(shè)我們的網(wǎng)頁(yè)同時(shí)約有 1000 個(gè)聯(lián)機(jī),而 TCP 傳送及接收的暫存區(qū)大小都是 16K,
          則最糟的情況下,我們會(huì)需要 (16K+16K) * 1024,也就是 32MB 的空間,
          然而所需的 mbufs 大概是這個(gè)空間的二倍,也就是 64MB,所以所需的 cluster 數(shù)量為 64MB/2K,也就是 32768。
          對(duì)于內(nèi)存有限的機(jī)器,建議值是 1024 到 4096 之間,而當(dāng)擁有海量存儲(chǔ)器空間時(shí),我們可以將它設(shè)定為 4096 到 32768 之間。
          我們可以使用 netstat 這個(gè)指令并加上參數(shù) -m 來(lái)查看目前所使用的 mbufs 數(shù)量。
          要修改這個(gè)值必須在一開(kāi)機(jī)就修改,所以只能在 /boot/loader.conf 中加入修改的設(shè)定
          kern.ipc.nmbclusters=32768
          ####################################


          kern.ipc.shmmax: 33554432
          #################http://www.bsdlover.cn#########
          共享內(nèi)存和信號(hào)燈("System VIPC")如果這些過(guò)小的話,有些大型的軟件將無(wú)法啟動(dòng)
          安裝xine和mplayer提示的設(shè)置為67108864,即64M,
          如果內(nèi)存多的話,可以設(shè)置為134217728,即128M
          ####################################


          kern.ipc.shmall: 8192
          #################http://www.bsdlover.cn#########
          共享內(nèi)存和信號(hào)燈("System VIPC")如果這些過(guò)小的話,有些大型的軟件將無(wú)法啟動(dòng)
          安裝xine和mplayer提示的設(shè)置為32768
          ####################################

          kern.ipc.shm_use_phys: 0
          #################http://www.bsdlover.cn#########
          如果我們將它設(shè)成 1,則所有 System V 共享內(nèi)存 (share memory,一種程序間溝通的方式)部份都會(huì)被留在實(shí)體的內(nèi)存 (physical memory) 中,
          而不會(huì)被放到硬盤(pán)上的 swap 空間。我們知道物理內(nèi)存的存取速度比硬盤(pán)快許多,而當(dāng)物理內(nèi)存空間不足時(shí),
          部份數(shù)據(jù)會(huì)被放到虛擬的內(nèi)存上,從物理內(nèi)存和虛擬內(nèi)存之間移轉(zhuǎn)的動(dòng)作就叫作 swap。如果時(shí)常做 swap 的動(dòng)作,
          則需要一直對(duì)硬盤(pán)作 I/O,速度會(huì)很慢。因此,如果我們有大量的程序 (數(shù)百個(gè)) 需要共同分享一個(gè)小的共享內(nèi)存空間,
          或者是共享內(nèi)存空間很大時(shí),我們可以將這個(gè)值打開(kāi)。
          這一項(xiàng),我個(gè)人建議不做修改,除非你的內(nèi)存非常大。
          ####################################


          kern.ipc.shm_allow_removed: 0
          #################http://www.bsdlover.cn#########
          共享內(nèi)存是否允許移除?這項(xiàng)似乎是在fb下裝vmware需要設(shè)置為1的,否則會(huì)有加載SVGA出錯(cuò)的提示
          作為服務(wù)器,這項(xiàng)不動(dòng)也罷。
          ####################################

          kern.ipc.numopensockets: 12
          #################http://www.bsdlover.cn#########
          已經(jīng)開(kāi)啟的socket數(shù)目,可以在最繁忙的時(shí)候看看它是多少,然后就可以知道m(xù)axsockets應(yīng)該設(shè)置成多少了。
          ####################################

          kern.ipc.maxsockets: 1928
          #################http://www.bsdlover.cn#########
          這是用來(lái)設(shè)定系統(tǒng)最大可以開(kāi)啟的 socket 數(shù)目。如果您的服務(wù)器會(huì)提供大量的 FTP 服務(wù),
          而且常快速的傳輸一些小檔案,您也許會(huì)發(fā)現(xiàn)常傳輸?shù)揭话刖椭袛唷R驗(yàn)?FTP 在傳輸檔案時(shí),
          每一個(gè)檔案都必須開(kāi)啟一個(gè) socket 來(lái)傳輸,但關(guān)閉 socket 需要一段時(shí)間,如果傳輸速度很快,
          而檔案又多,則同一時(shí)間所開(kāi)啟的 socket 會(huì)超過(guò)原本系統(tǒng)所許可的值,這時(shí)我們就必須把這個(gè)值調(diào)大一點(diǎn)。
          除了 FTP 外,也許有其它網(wǎng)絡(luò)程序也會(huì)有這種問(wèn)題。
          然而,這個(gè)值必須在系統(tǒng)一開(kāi)機(jī)就設(shè)定好,所以如果要修改這項(xiàng)設(shè)定,我們必須修改 /boot/loader.conf 才行
          kern.ipc.maxsockets="16424"
          ####################################

          kern.ipc.nsfbufs: 1456
          #################http://www.bsdlover.cn#########
          經(jīng)常使用 sendfile(2) 系統(tǒng)調(diào)用的繁忙的服務(wù)器,
          有必要通過(guò) NSFBUFS 內(nèi)核選項(xiàng)或者在 /boot/loader.conf (查看 loader(8) 以獲得更多細(xì)節(jié)) 中設(shè)置它的值來(lái)調(diào)節(jié) sendfile(2) 緩存數(shù)量。
          這個(gè)參數(shù)需要調(diào)節(jié)的普通原因是在進(jìn)程中看到 sfbufa 狀態(tài)。sysctl kern.ipc.nsfbufs 變量在內(nèi)核配置變量中是只讀的。
          這個(gè)參數(shù)是由 kern.maxusers 決定的,然而它可能有必要因此而調(diào)整。
          在/boot/loader.conf里加入
          kern.ipc.nsfbufs="2496"
          ####################################


          kern.maxusers: 59
          #################http://www.bsdlover.cn#########
          maxusers 的值決定了處理程序所容許的最大值,20+16*maxusers 就是你將得到的所容許處理程序。
          系統(tǒng)一開(kāi)機(jī)就必須要有 18 個(gè)處理程序 (process),即便是簡(jiǎn)單的執(zhí)行指令 man 又會(huì)產(chǎn)生 9 個(gè) process,
          所以將這個(gè)值設(shè)為 64 應(yīng)該是一個(gè)合理的數(shù)目。
          如果你的系統(tǒng)會(huì)出現(xiàn) proc table full 的訊息的話,可以就把它設(shè)大一點(diǎn),例如 128。
          除非您的系統(tǒng)會(huì)需要同時(shí)開(kāi)啟很多檔案,否則請(qǐng)不要設(shè)定超過(guò) 256。

          可以在 /boot/loader.conf 中加入該選項(xiàng)的設(shè)定,
          kern.maxusers=256
          ####################################

          kern.coredump: 1
          #################http://www.bsdlover.cn#########
          如果設(shè)置為0,則程序異常退出時(shí)不會(huì)生成core文件,作為服務(wù)器,不建議這樣。
          ####################################

          kern.corefile: %N.core
          #################http://www.bsdlover.cn#########
          可設(shè)置為kern.corefile="/data/coredump/%U-%P-%N.core"
          其中 %U是UID,%P是進(jìn)程ID,%N是進(jìn)程名,當(dāng)然/data/coredump必須是一個(gè)實(shí)際存在的目錄
          ####################################


          vm.swap_idle_enabled: 0
          vm.swap_idle_threshold1: 2
          vm.swap_idle_threshold2: 10
          #########################
          在有很多用戶(hù)進(jìn)入、離開(kāi)系統(tǒng)和有很多空閑進(jìn)程的大的多用戶(hù)系統(tǒng)中很有用。
          可以讓進(jìn)程更快地進(jìn)入內(nèi)存,但它會(huì)吃掉更多的交換和磁盤(pán)帶寬。
          系統(tǒng)默認(rèn)的頁(yè)面調(diào)度算法已經(jīng)很好了,最好不要更改。
          ########################


          vfs.ufs.dirhash_maxmem: 2097152
          #########################
          默認(rèn)的dirhash最大內(nèi)存,默認(rèn)2M
          增加它有助于改善單目錄超過(guò)100K個(gè)文件時(shí)的反復(fù)讀目錄時(shí)的性能
          建議修改為33554432(32M)
          #############################


          vfs.vmiodirenable: 1
          #################
          這個(gè)變量控制目錄是否被系統(tǒng)緩存。大多數(shù)目錄是小的,在系統(tǒng)中只使用單個(gè)片斷(典型的是1K)并且在緩存中使用的更小 (典型的是512字節(jié))。
          當(dāng)這個(gè)變量設(shè)置為關(guān)閉 (0) 時(shí),緩存器僅僅緩存固定數(shù)量的目錄,即使您有很大的內(nèi)存。
          而將其開(kāi)啟 (設(shè)置為1) 時(shí),則允許緩存器用 VM 頁(yè)面緩存來(lái)緩存這些目錄,讓所有可用內(nèi)存來(lái)緩存目錄。
          不利的是最小的用來(lái)緩存目錄的核心內(nèi)存是大于 512 字節(jié)的物理頁(yè)面大小(通常是 4k)。
          我們建議如果您在運(yùn)行任何操作大量文件的程序時(shí)保持這個(gè)選項(xiàng)打開(kāi)的默認(rèn)值。
          這些服務(wù)包括 web 緩存,大容量郵件系統(tǒng)和新聞系統(tǒng)。
          盡管可能會(huì)浪費(fèi)一些內(nèi)存,但打開(kāi)這個(gè)選項(xiàng)通常不會(huì)降低性能。但還是應(yīng)該檢驗(yàn)一下。
          ####################


          vfs.hirunningspace: 1048576
          ############################
          這個(gè)值決定了系統(tǒng)可以將多少數(shù)據(jù)放在寫(xiě)入儲(chǔ)存設(shè)備的等候區(qū)。通常使用默認(rèn)值即可,
          但當(dāng)我們有多顆硬盤(pán)時(shí),我們可以將它調(diào)大為 4MB 或 5MB。
          注意這個(gè)設(shè)置成很高的值(超過(guò)緩存器的寫(xiě)極限)會(huì)導(dǎo)致壞的性能。
          不要盲目的把它設(shè)置太高!高的數(shù)值會(huì)導(dǎo)致同時(shí)發(fā)生的讀操作的遲延。
          #############################


          vfs.write_behind: 1
          #########################
          這個(gè)選項(xiàng)預(yù)設(shè)為 1,也就是打開(kāi)的狀態(tài)。在打開(kāi)時(shí),在系統(tǒng)需要寫(xiě)入數(shù)據(jù)在硬盤(pán)或其它儲(chǔ)存設(shè)備上時(shí),
          它會(huì)等到收集了一個(gè) cluster 單位的數(shù)據(jù)后再一次寫(xiě)入,否則會(huì)在一個(gè)暫存區(qū)空間有寫(xiě)入需求時(shí)就立即寫(xiě)到硬盤(pán)上。
          這個(gè)選項(xiàng)打開(kāi)時(shí),對(duì)于一個(gè)大的連續(xù)的文件寫(xiě)入速度非常有幫助。但如果您遇到有很多行程延滯在等待寫(xiě)入動(dòng)作時(shí),您可能必須關(guān)閉這個(gè)功能。
          ############################

          net.local.stream.sendspace: 8192
          ##################################
          本地套接字連接的數(shù)據(jù)發(fā)送空間
          建議設(shè)置為65536
          ###################################
          net.local.stream.recvspace: 8192
          ##################################
          本地套接字連接的數(shù)據(jù)接收空間
          建議設(shè)置為65536
          ###################################


          net.inet.ip.portrange.lowfirst: 1023
          net.inet.ip.portrange.lowlast: 600
          net.inet.ip.portrange.first: 49152
          net.inet.ip.portrange.last: 65535
          net.inet.ip.portrange.hifirst: 49152
          net.inet.ip.portrange.hilast: 65535
          ###################
          以上六項(xiàng)是用來(lái)控制TCP及UDP所使用的port范圍,這個(gè)范圍被分成三個(gè)部份,低范圍、預(yù)設(shè)范圍、及高范圍。
          這些是你的服務(wù)器主動(dòng)發(fā)起連接時(shí)的臨時(shí)端口的范圍,預(yù)設(shè)的已經(jīng)1萬(wàn)多了,一般的應(yīng)用就足夠了。
          如果是比較忙碌的FTP server,一般也不會(huì)同時(shí)提供給1萬(wàn)多人訪問(wèn)的,
          當(dāng)然如果很不幸,你的服務(wù)器就要提供很多,那么可以修改first的值,比如直接用1024開(kāi)始
          #########################


          net.inet.ip.redirect: 1
          #########################
          設(shè)置為0,屏蔽ip重定向功能
          ###########################

          net.inet.ip.rtexpire: 3600
          net.inet.ip.rtminexpire: 10
          ########################
          很多apache產(chǎn)生的CLOSE_WAIT狀態(tài),這種狀態(tài)是等待客戶(hù)端關(guān)閉,但是客戶(hù)端那邊并沒(méi)有正常的關(guān)閉,于是留下很多這樣的東東。
          建議都修改為2
          #########################


          net.inet.ip.intr_queue_maxlen: 50
          ########################
          Maximum size of the IP input queue,如果下面的net.inet.ip.intr_queue_drops一直在增加,
          那就說(shuō)明你的隊(duì)列空間不足了,那么可以考慮增加該值。
          ##########################
          net.inet.ip.intr_queue_drops: 0
          ####################
          Number of packets dropped from the IP input queue,如果你sysctl它一直在增加,
          那么增加net.inet.ip.intr_queue_maxlen的值。
          #######################


          net.inet.ip.fastforwarding: 0
          #############################
          如果打開(kāi)的話每個(gè)目標(biāo)地址一次轉(zhuǎn)發(fā)成功以后它的數(shù)據(jù)都將被記錄進(jìn)路由表和arp數(shù)據(jù)表,節(jié)約路由的計(jì)算時(shí)間
          但會(huì)需要大量的內(nèi)核內(nèi)存空間來(lái)保存路由表。
          如果內(nèi)存夠大,打開(kāi)吧,呵呵
          #############################


          net.inet.ip.random_id: 0
          #####################
          默認(rèn)情況下,ip包的id號(hào)是連續(xù)的,而這些可能會(huì)被攻擊者利用,比如可以知道你nat后面帶了多少主機(jī)。
          如果設(shè)置成1,則這個(gè)id號(hào)是隨機(jī)的,嘿嘿。
          #####################

          net.inet.icmp.maskrepl: 0
          ############################
          防止廣播風(fēng)暴,關(guān)閉其他廣播探測(cè)的響應(yīng)。默認(rèn)即是,無(wú)須修改。
          ###############################

          net.inet.icmp.icmplim: 200
          ##############################
          限制系統(tǒng)發(fā)送ICMP速率,改為100吧,或者保留也可,并不會(huì)給系統(tǒng)帶來(lái)太大的壓力。
          ###########################
          net.inet.icmp.icmplim_output: 1
          ###################################
          如果設(shè)置成0,就不會(huì)看到提示說(shuō)Limiting icmp unreach response from 214 to 200 packets per second 等等了
          不過(guò)禁止輸出容易讓我們忽視攻擊的存在。這個(gè)自己看著辦吧。
          ######################################

          net.inet.icmp.drop_redirect: 0
          net.inet.icmp.log_redirect: 0
          ###################################
          設(shè)置為1,屏蔽ICMP重定向功能
          ###################################
          net.inet.icmp.bmcastecho: 0
          ############################
          防止廣播風(fēng)暴,關(guān)閉廣播ECHO響應(yīng),默認(rèn)即是,無(wú)須修改。
          ###############################


          net.inet.tcp.mssdflt: 512
          net.inet.tcp.minmss: 216
          ###############################
          數(shù)據(jù)包數(shù)據(jù)段最小值,以上兩個(gè)選項(xiàng)最好不動(dòng)!或者只修改mssdflt為1460,minmss不動(dòng)。
          原因詳見(jiàn)http://www.bsdlover.cn/security/2007/1211/article_4.html
          #############################


          net.inet.tcp.keepidle: 7200000
          ######################
          TCP的套接字的空閑時(shí)間,默認(rèn)時(shí)間太長(zhǎng),可以改為600000(10分鐘)。
          ##########################

          net.inet.tcp.sendspace: 32768
          #################http://www.bsdlover.cn#########
          最大的待發(fā)送TCP數(shù)據(jù)緩沖區(qū)空間,應(yīng)用程序?qū)?shù)據(jù)放到這里就認(rèn)為發(fā)送成功了,系統(tǒng)TCP堆棧保證數(shù)據(jù)的正常發(fā)送。
          ####################################
          net.inet.tcp.recvspace: 65536
          ###################################
          最大的接受TCP緩沖區(qū)空間,系統(tǒng)從這里將數(shù)據(jù)分發(fā)給不同的套接字,增大該空間可提高系統(tǒng)瞬間接受數(shù)據(jù)的能力以提高性能。
          ###################################
          這二個(gè)選項(xiàng)分別控制了網(wǎng)絡(luò) TCP 聯(lián)機(jī)所使用的傳送及接收暫存區(qū)的大小。預(yù)設(shè)的傳送暫存區(qū)為 32K,而接收暫存區(qū)為 64K。
          如果需要加速 TCP 的傳輸,可以將這二個(gè)值調(diào)大一點(diǎn),但缺點(diǎn)是太大的值會(huì)造成系統(tǒng)核心占用太多的內(nèi)存。
          如果我們的機(jī)器會(huì)同時(shí)服務(wù)數(shù)百或數(shù)千個(gè)網(wǎng)絡(luò)聯(lián)機(jī),那么這二個(gè)選項(xiàng)最好維持默認(rèn)值,否則會(huì)造成系統(tǒng)核心內(nèi)存不足。
          但如果我們使用的是 gigabite 的網(wǎng)絡(luò),將這二個(gè)值調(diào)大會(huì)有明顯效能的提升。
          傳送及接收的暫存區(qū)大小可以分開(kāi)調(diào)整,
          例如,假設(shè)我們的系統(tǒng)主要做為網(wǎng)頁(yè)服務(wù)器,我們可以將接收的暫存區(qū)調(diào)小一點(diǎn),并將傳送的暫存區(qū)調(diào)大,如此一來(lái),我們就可以避免占去太多的核心內(nèi)存空間。

          net.inet.udp.maxdgram: 9216
          #########################
          最大的發(fā)送UDP數(shù)據(jù)緩沖區(qū)大小,網(wǎng)上的資料大多都是65536,我個(gè)人認(rèn)為沒(méi)多大必要,
          如果要調(diào)整,可以試試24576。
          ##############################
          net.inet.udp.recvspace: 42080
          ##################
          最大的接受UDP緩沖區(qū)大小,網(wǎng)上的資料大多都是65536,我個(gè)人認(rèn)為沒(méi)多大必要,
          如果要調(diào)整,可以試試49152。
          #######################
          以上四項(xiàng)配置通常不會(huì)導(dǎo)致問(wèn)題,一般說(shuō)來(lái)網(wǎng)絡(luò)流量是不對(duì)稱(chēng)的,因此應(yīng)該根據(jù)實(shí)際情況調(diào)整,并觀察其效果。
          如果我們將傳送或接收的暫存區(qū)設(shè)為大于 65535,除非服務(wù)器本身及客戶(hù)端所使用的操作系統(tǒng)都支持 TCP 協(xié)議的 windows scaling extension (請(qǐng)參考 RFC 1323 文件)。
          FreeBSD默認(rèn)已支持 rfs1323 (即 sysctl 的 net.inet.tcp.rfc1323 選項(xiàng))。
          ###################################################


          net.inet.tcp.log_in_vain: 0
          ##################
          記錄下任何TCP連接,這個(gè)一般情況下不應(yīng)該更改。
          ####################

          net.inet.tcp.blackhole: 0
          ##################################
          建議設(shè)置為2,接收到一個(gè)已經(jīng)關(guān)閉的端口發(fā)來(lái)的所有包,直接drop,如果設(shè)置為1則是只針對(duì)TCP包
          #####################################

          net.inet.tcp.delayed_ack: 1
          ###########################
          當(dāng)一臺(tái)計(jì)算機(jī)發(fā)起TCP連接請(qǐng)求時(shí),系統(tǒng)會(huì)回應(yīng)ACK應(yīng)答數(shù)據(jù)包。
          該選項(xiàng)設(shè)置是否延遲ACK應(yīng)答數(shù)據(jù)包,把它和包含數(shù)據(jù)的數(shù)據(jù)包一起發(fā)送。
          在高速網(wǎng)絡(luò)和低負(fù)載的情況下會(huì)略微提高性能,但在網(wǎng)絡(luò)連接較差的時(shí)候,
          對(duì)方計(jì)算機(jī)得不到應(yīng)答會(huì)持續(xù)發(fā)起連接請(qǐng)求,反而會(huì)讓網(wǎng)絡(luò)更加擁堵,降低性能。
          因此這個(gè)值我建議您看情況而定,如果您的網(wǎng)速不是問(wèn)題,可以將封包數(shù)量減少一半
          如果網(wǎng)絡(luò)不是特別好,那么就設(shè)置為0,有請(qǐng)求就先回應(yīng),這樣其實(shí)浪費(fèi)的網(wǎng)通、電信的帶寬速率而不是你的處理時(shí)間:)
          ############################


          net.inet.tcp.inflight.enable: 1
          net.inet.tcp.inflight.debug: 0
          net.inet.tcp.inflight.rttthresh: 10
          net.inet.tcp.inflight.min: 6144
          net.inet.tcp.inflight.max: 1073725440
          net.inet.tcp.inflight.stab: 20
          ###########################
          限制 TCP 帶寬延遲積和 NetBSD 的 TCP/Vegas 類(lèi)似。
          它可以通過(guò)將 sysctl 變量 net.inet.tcp.inflight.enable 設(shè)置成 1 來(lái)啟用。
          系統(tǒng)將嘗試計(jì)算每一個(gè)連接的帶寬延遲積,并將排隊(duì)的數(shù)據(jù)量限制在恰好能保持最優(yōu)吞吐量的水平上。
          這一特性在您的服務(wù)器同時(shí)向使用普通調(diào)制解調(diào)器,千兆以太網(wǎng),乃至更高速度的光與網(wǎng)絡(luò)連接 (或其他帶寬延遲積很大的連接) 的時(shí)候尤為重要,
          特別是當(dāng)您同時(shí)使用滑動(dòng)窗縮放,或使用了大的發(fā)送窗口的時(shí)候。
          如果啟用了這個(gè)選項(xiàng),您還應(yīng)該把 net.inet.tcp.inflight.debug 設(shè)置為 0 (禁用調(diào)試),
          對(duì)于生產(chǎn)環(huán)境而言, 將 net.inet.tcp.inflight.min 設(shè)置成至少 6144 會(huì)很有好處。
          然而, 需要注意的是,這個(gè)值設(shè)置過(guò)大事實(shí)上相當(dāng)于禁用了連接帶寬延遲積限制功能。
          這個(gè)限制特性減少了在路由和交換包隊(duì)列的堵塞數(shù)據(jù)數(shù)量,也減少了在本地主機(jī)接口隊(duì)列阻塞的數(shù)據(jù)的數(shù)量。
          在少數(shù)的等候隊(duì)列中、交互式連接,尤其是通過(guò)慢速的調(diào)制解調(diào)器,也能用低的 往返時(shí)間操作。
          但是,注意這只影響到數(shù)據(jù)發(fā)送 (上載/服務(wù)端)。對(duì)數(shù)據(jù)接收(下載)沒(méi)有效果。
          調(diào)整 net.inet.tcp.inflight.stab 是 不 推薦的。
          這個(gè)參數(shù)的默認(rèn)值是 20,表示把 2 個(gè)最大包加入到帶寬延遲積窗口的計(jì)算中。
          額外的窗口似的算法更為穩(wěn)定,并改善對(duì)于多變網(wǎng)絡(luò)環(huán)境的相應(yīng)能力,
          但也會(huì)導(dǎo)致慢速連接下的 ping 時(shí)間增長(zhǎng) (盡管還是會(huì)比沒(méi)有使用 inflight 算法低許多)。
          對(duì)于這些情形, 您可能會(huì)希望把這個(gè)參數(shù)減少到 15, 10, 或 5;
          并可能因此而不得不減少 net.inet.tcp.inflight.min (比如說(shuō), 3500) 來(lái)得到希望的效果。
          減少這些參數(shù)的值, 只應(yīng)作為最后不得已時(shí)的手段來(lái)使用。
          ############################

          net.inet.tcp.syncookies: 1
          #########################
          SYN cookies是一種用于通過(guò)選擇加密的初始化TCP序列號(hào),可以對(duì)回應(yīng)的包做驗(yàn)證來(lái)降低SYN'洪水'攻擊的影響的技術(shù)。
          默認(rèn)即是,不需修改
          ########################


          net.inet.tcp.msl: 30000
          #######################
          這個(gè)值網(wǎng)上很多文章都推薦的7500,
          還可以改的更小一些(如2000或2500),這樣可以加快不正常連接的釋放過(guò)程(三次握手2秒、FIN_WAIT4秒)。
          #########################
          net.inet.tcp.always_keepalive: 1
          ###########################
          幫助系統(tǒng)清除沒(méi)有正常斷開(kāi)的TCP連接,這增加了一些網(wǎng)絡(luò)帶寬的使用,但是一些死掉的連接最終能被識(shí)別并清除。
          死的TCP連接是被撥號(hào)用戶(hù)存取的系統(tǒng)的一個(gè)特別的問(wèn)題,因?yàn)橛脩?hù)經(jīng)常斷開(kāi)modem而不正確的關(guān)閉活動(dòng)的連接。
          #############################

          net.inet.udp.checksum: 1
          #########################
          防止不正確的udp包的攻擊,默認(rèn)即是,不需修改
          ##############################

          net.inet.udp.log_in_vain: 0
          #######################
          記錄下任何UDP連接,這個(gè)一般情況下不應(yīng)該修改。
          #######################

          net.inet.udp.blackhole: 0
          ####################
          建議設(shè)置為1,接收到一個(gè)已經(jīng)關(guān)閉的端口發(fā)來(lái)的所有UDP包直接drop
          #######################


          net.inet.raw.maxdgram: 8192
          #########################
          Maximum outgoing raw IP datagram size
          很多文章建議設(shè)置為65536,好像沒(méi)多大必要。
          ######################################
          net.inet.raw.recvspace: 8192
          ######################
          Maximum incoming raw IP datagram size
          很多文章建議設(shè)置為65536,好像沒(méi)多大必要。
          #######################

          net.link.ether.inet.max_age: 1200
          ####################
          調(diào)整ARP清理的時(shí)間,通過(guò)向IP路由緩沖填充偽造的ARP條目可以讓惡意用戶(hù)產(chǎn)生資源耗竭和性能減低攻擊。
          這項(xiàng)似乎大家都未做改動(dòng),我建議不動(dòng)或者稍微減少,比如300(HP-UX默認(rèn)的5分鐘)
          #######################

          net.inet6.ip6.redirect: 1
          ###############################
          設(shè)置為0,屏蔽ipv6重定向功能
          ###########################


          net.isr.direct: 0
          #################http://www.bsdlover.cn#########
          所有MPSAFE的網(wǎng)絡(luò)ISR對(duì)包做立即響應(yīng),提高網(wǎng)卡性能,設(shè)置為1。
          ####################################


          hw.ata.wc: 1
          #####################
          這個(gè)選項(xiàng)用來(lái)打開(kāi) IDE 硬盤(pán)快取。當(dāng)打開(kāi)時(shí),如果有數(shù)據(jù)要寫(xiě)入硬盤(pán)時(shí),硬盤(pán)會(huì)假裝已完成寫(xiě)入,并將數(shù)據(jù)快取起來(lái)。
          這種作法會(huì)加速硬盤(pán)的存取速度,但當(dāng)系統(tǒng)異常關(guān)機(jī)時(shí),比較容易造成數(shù)據(jù)遺失。
          不過(guò)由于關(guān)閉這個(gè)功能所帶來(lái)的速度差異實(shí)在太大,建議還是保留原本打開(kāi)的狀態(tài)吧,不做修改。
          ###################


          security.bsd.see_other_uids: 1
          security.bsd.see_other_gids: 1
          #####################
          不允許用戶(hù)看到其他用戶(hù)的進(jìn)程,因此應(yīng)該改成0,
          #######################

          posted on 2007-12-26 10:34 狂龍 閱讀(264) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(2)

          隨筆分類(lèi)

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 若尔盖县| 江都市| 临汾市| 云南省| 全椒县| 东港市| 张掖市| 海盐县| 故城县| 南乐县| 安达市| 崇仁县| 文化| 肥乡县| 奈曼旗| 天台县| 宝丰县| 惠东县| 湘潭县| 浦城县| 阿拉善右旗| 太康县| 莱西市| 同江市| 达日县| 志丹县| 肥东县| 伊宁市| 石阡县| 方山县| 南充市| 额尔古纳市| 拉萨市| 亚东县| 额济纳旗| 应城市| 广河县| 庆安县| 社旗县| 奎屯市| 涞源县|