Linux 最全面系統優化方案

###############################node

  net.inet.ip.sourceroute=0web

  net.inet.ip.accept_sourceroute=0算法

  #############################數據庫

  經過源路由,***者能夠嘗試到達內部IP地址 --包括RFC1918中的地址,因此apache

  不接受源路由信息包能夠防止你的內部網絡被探測。windows

  #################################緩存

  net.inet.tcp.drop_synfin=1安全

  ###################################服務器

  安全參數,編譯內核的時候加了options TCP_DROP_SYNFIN才能夠用,能夠阻止某些OS探測。網絡

  ##################################

  kern.maxvnodes=8446

  #################http://www.bsdlover.cn#########

  vnode 是對文件或目錄的一種內部表達。 所以, 增長能夠被操做系統利用的 vnode 數量將下降磁盤的 I/O。

  通常而言, 這是由操做系統自行完成的,也不須要加以修改。但在某些時候磁盤 I/O 會成爲瓶頸,

  而系統的 vnode 不足, 則這一配置應被增長。此時須要考慮是非活躍和空閒內存的數量。

  要查看當前在用的 vnode 數量:

  # sysctl vfs.numvnodes

  vfs.numvnodes: 91349

  要查看最大可用的 vnode 數量:

  # sysctl kern.maxvnodes

  kern.maxvnodes: 100000

  若是當前的 vnode 用量接近最大值,則將 kern.maxvnodes 值增大 1,000 多是個好主意。

  您應繼續查看 vfs.numvnodes 的數值, 若是它再次攀升到接近最大值的程度,

  仍需繼續提升 kern.maxvnodes。 在 top(1) 中顯示的內存用量應有顯著變化,

  更多內存會處於活躍 (active) 狀態。

  ####################################

  kern.maxproc: 964

#################http://www.bsdlover.cn#########

  Maximum number of processes

  ####################################

  kern.maxprocperuid: 867

  #################http://www.bsdlover.cn#########

  Maximum processes allowed per userid

  ####################################

  由於個人maxusers設置的是256,20+16*maxusers=4116。

  maxprocperuid至少要比maxproc少1,由於init(8) 這個系統程序絕對要保持在運做狀態。

  我給它設置的2068。

  kern.maxfiles: 1928

  #################http://www.bsdlover.cn#########

  系統中支持最多同時開啓的文件數量,若是你在運行數據庫或大的很吃描述符的進程,那麼應該設置在20000以上,

  好比kde這樣的桌面環境,它同時要用的文件很是多。

  通常推薦設置爲32768或者65536。

  ####################################

  kern.argmax: 262144

  #################http://www.bsdlover.cn#########

  maximum number of bytes (or characters) in an argument list.

  命令行下最多支持的參數,好比你在用find命令來批量刪除一些文件的時候

  find . -name "*.old" -delete,若是文件數超過了這個數字,那麼會提示你數字太多的。

  能夠利用find . -name "*.old" -ok rm {} ;來刪除。

  默認的參數已經足夠多了,所以不建議再作修改。

  ####################################

  kern.securelevel: -1

  #################http://www.bsdlover.cn#########

  -1:這是系統默認級別,沒有提供任何內核的保護錯誤;

0:基本上做用很少,當你的系統剛啓動就是0級別的,當進入多用戶模式的時候就自動變成1級了。

  1:在這個級別上,有以下幾個限制:

  a. 不能經過kldload或者kldunload加載或者卸載可加載內核模塊;

  b. 應用程序不能經過/dev/mem或者/dev/kmem直接寫內存;

  c. 不能直接往已經裝在(mounted)的磁盤寫東西,也就是不能格式化磁盤,可是能夠經過標準的內核接口執行寫操做;

  d. 不能啓動X-windows,同時不能使用chflags來修改文件屬性;

  2:在 1 級別的基礎上還不能寫沒裝載的磁盤,並且不能在1秒以內製造屢次警告,這個是防止DoS控制檯的;

  3:在 2 級別的級別上不容許修改IPFW防火牆的規則。

  若是你已經裝了防火牆,而且把規則設好了,不輕易改動,那麼建議使用3級別,若是你沒有裝防火牆,並且還準備裝防火牆的話,不建議使用。

  咱們這裏推薦使用 2 級別,可以避免比較多對內核***。

  ####################################

  kern.maxfilesperproc: 1735

  #################http://www.bsdlover.cn#########

  每一個進程可以同時打開的最大文件數量,網上不少資料寫的是32768

  除非用異步I/O或大量線程,打開這麼多的文件恐怕是不太正常的。

  我我的建議不作修改,保留默認。

  ####################################

  kern.ipc.maxsockbuf: 262144

  #################http://www.bsdlover.cn#########

  最大的套接字緩衝區,網上有建議設置爲2097152(2M)、8388608(8M)的。

  我我的卻是建議不作修改,保持默認的256K便可,緩衝區大了可能形成碎片、阻塞或者丟包。

  ####################################

kern.ipc.somaxconn: 128

  #################http://www.bsdlover.cn#########

  最大的等待鏈接完成的套接字隊列大小,即併發鏈接數。

  高負載服務器和受到Dos***的系統也許會由於這個隊列被塞滿而不能提供正常服務。

  默認爲128,推薦在1024-4096之間,根據機器和實際狀況須要改動,數字越大佔用內存也越大。

  ####################################

  kern.ipc.nmbclusters: 4800

  #################http://www.bsdlover.cn#########

  這個值用來調整系統在開機後所要分配給網絡 mbufs 的 cluster 數量,

  因爲每一個 cluster 大小爲 2K,因此當這個值爲 1024 時,也是會用到 2MB 的核心內存空間。

  假設咱們的網頁同時約有 1000 個聯機,而 TCP 傳送及接收的暫存區大小都是 16K,

  則最糟的狀況下,咱們會須要 (16K+16K) * 1024,也就是 32MB 的空間,

  然而所需的 mbufs 大概是這個空間的二倍,也就是 64MB,因此所需的 cluster 數量爲 64MB/2K,也就是 32768。

  對於內存有限的機器,建議值是 1024 到 4096 之間,而當擁有海量存儲器空間時,咱們能夠將它設定爲 4096 到 32768 之間。

  咱們可使用 netstat 這個指令並加上參數 -m 來查看目前所使用的 mbufs 數量。

  要修改這個值必須在一開機就修改,因此只能在 /boot/loader.conf 中加入修改的設定

  kern.ipc.nmbclusters=32768

  ####################################

  kern.ipc.shmmax: 33554432

  #################http://www.bsdlover.cn#########

  共享內存和信號燈("System VIPC")若是這些太小的話,有些大型的軟件將沒法啓動

安裝xine和mplayer提示的設置爲67108864,即64M,

  若是內存多的話,能夠設置爲134217728,即128M

  ####################################

  kern.ipc.shmall: 8192

  #################http://www.bsdlover.cn#########

  共享內存和信號燈("System VIPC")若是這些太小的話,有些大型的軟件將沒法啓動

  安裝xine和mplayer提示的設置爲32768

  ####################################

  kern.ipc.shm_use_phys: 0

  #################http://www.bsdlover.cn#########

  若是咱們將它設成 1,則全部 System V 共享內存 (share memory,一種程序間溝通的方式)部份都會被留在實體的內存 (physical memory) 中,

  而不會被放到硬盤上的 swap 空間。咱們知道物理內存的存取速度比硬盤快許多,而當物理內存空間不足時,

  部份數據會被放到虛擬的內存上,從物理內存和虛擬內存之間移轉的動做就叫做 swap。若是時常作 swap 的動做,

  則須要一直對硬盤做 I/O,速度會很慢。所以,若是咱們有大量的程序 (數百個) 須要共同分享一個小的共享內存空間,

  或者是共享內存空間很大時,咱們能夠將這個值打開。

  這一項,我我的建議不作修改,除非你的內存很是大。

  ####################################

  kern.ipc.shm_allow_removed: 0

  #################http://www.bsdlover.cn#########

  共享內存是否容許移除?這項彷佛是在fb下裝vmware須要設置爲1的,不然會有加載SVGA出錯的提示

  做爲服務器,這項不動也罷。

  ####################################

  kern.ipc.numopensockets: 12

  #################http://www.bsdlover.cn#########

 已經開啓的socket數目,能夠在最繁忙的時候看看它是多少,而後就能夠知道maxsockets應該設置成多少了。

  ####################################

  kern.ipc.maxsockets: 1928

  #################http://www.bsdlover.cn#########

  這是用來設定系統最大能夠開啓的 socket 數目。若是您的服務器會提供大量的 FTP 服務,

  並且常快速的傳輸一些小檔案,您也許會發現常傳輸到一半就中斷。由於 FTP 在傳輸檔案時,

  每個檔案都必須開啓一個 socket 來傳輸,但關閉 socket 須要一段時間,若是傳輸速度很快,

  而檔案又多,則同一時間所開啓的 socket 會超過本來系統所許可的值,這時咱們就必須把這個值調大一點。

  除了 FTP 外,也許有其它網絡程序也會有這種問題。

  然而,這個值必須在系統一開機就設定好,因此若是要修改這項設定,咱們必須修改 /boot/loader.conf 才行

  kern.ipc.maxsockets="16424"

  ####################################

  kern.ipc.nsfbufs: 1456

  #################http://www.bsdlover.cn#########

  常用 sendfile(2) 系統調用的繁忙的服務器,

  有必要經過 NSFBUFS 內核選項或者在 /boot/loader.conf (查看 loader(8) 以得到更多細節) 中設置它的值來調節 sendfile(2) 緩存數量。

  這個參數須要調節的普通緣由是在進程中看到 sfbufa 狀態。sysctl kern.ipc.nsfbufs 變量在內核配置變量中是隻讀的。

  這個參數是由 kern.maxusers 決定的,然而它可能有必要所以而調整。

  在/boot/loader.conf里加入

  kern.ipc.nsfbufs="2496"

  ####################################

kern.maxusers: 59

  #################http://www.bsdlover.cn#########

  maxusers 的值決定了處理程序所允許的最大值,20+16*maxusers 就是你將獲得的所允許處理程序。

  系統一開機就必需要有 18 個處理程序 (process),即使是簡單的執行指令 man 又會產生 9 個 process,

  因此將這個值設爲 64 應該是一個合理的數目。

  若是你的系統會出現 proc table full 的訊息的話,能夠就把它設大一點,例如 128。

  除非您的系統會須要同時開啓不少檔案,不然請不要設定超過 256。

  能夠在 /boot/loader.conf 中加入該選項的設定,

  kern.maxusers=256

  ####################################

  kern.coredump: 1

  #################http://www.bsdlover.cn#########

  若是設置爲0,則程序異常退出時不會生成core文件,做爲服務器,不建議這樣。

  ####################################

  kern.corefile: %N.core

  #################http://www.bsdlover.cn#########

  可設置爲kern.corefile="/data/coredump/%U-%P-%N.core"

  其中 %U是UID,%P是進程ID,%N是進程名,固然/data/coredump必須是一個實際存在的目錄

  ####################################

  vm.swap_idle_enabled: 0

  vm.swap_idle_threshold1: 2

  vm.swap_idle_threshold2: 10

  #########################

  在有不少用戶進入、離開系統和有不少空閒進程的大的多用戶系統中頗有用。

  可讓進程更快地進入內存,但它會吃掉更多的交換和磁盤帶寬。

  系統默認的頁面調度算法已經很好了,最好不要更改。

########################

  vfs.ufs.dirhash_maxmem: 2097152

  #########################

  默認的dirhash最大內存,默認2M

  增長它有助於改善單目錄超過100K個文件時的反覆讀目錄時的性能

  建議修改成33554432(32M)

  #############################

  vfs.vmiodirenable: 1

  #################

  這個變量控制目錄是否被系統緩存。大多數目錄是小的,在系統中只使用單個片段(典型的是1K)而且在緩存中使用的更小 (典型的是512字節)。

  當這個變量設置爲關閉 (0) 時,緩存器僅僅緩存固定數量的目錄,即便您有很大的內存。

  而將其開啓 (設置爲1) 時,則容許緩存器用 VM 頁面緩存來緩存這些目錄,讓全部可用內存來緩存目錄。

  不利的是最小的用來緩存目錄的核心內存是大於 512 字節的物理頁面大小(一般是 4k)。

  咱們建議若是您在運行任何操做大量文件的程序時保持這個選項打開的默認值。

  這些服務包括 web 緩存,大容量郵件系統和新聞系統。

  儘管可能會浪費一些內存,但打開這個選項一般不會下降性能。但仍是應該檢驗一下。

  ####################

  vfs.hirunningspace: 1048576

  ############################

  這個值決定了系統能夠將多少數據放在寫入儲存設備的等候區。一般使用默認值便可,

  但當咱們有多顆硬盤時,咱們能夠將它調大爲 4MB 或 5MB。

  注意這個設置成很高的值(超過緩存器的寫極限)會致使壞的性能。

  不要盲目的把它設置過高!高的數值會致使同時發生的讀操做的遲延。

  #############################

  vfs.write_behind: 1

  #########################

這個選項預設爲 1,也就是打開的狀態。在打開時,在系統須要寫入數據在硬盤或其它儲存設備上時,

  它會等到收集了一個 cluster 單位的數據後再一次寫入,不然會在一個暫存區空間有寫入需求時就當即寫到硬盤上。

  這個選項打開時,對於一個大的連續的文件寫入速度很是有幫助。但若是您遇到有不少行程延滯在等待寫入動做時,您可能必須關閉這個功能。

  ############################

  net.local.stream.sendspace: 8192

  ##################################

  本地套接字鏈接的數據發送空間

  建議設置爲65536

  ###################################

  net.local.stream.recvspace: 8192

  ##################################

  本地套接字鏈接的數據接收空間

  建議設置爲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

  ###################

  以上六項是用來控制TCP及UDP所使用的port範圍,這個範圍被分紅三個部份,低範圍、預設範圍、及高範圍。

  這些是你的服務器主動發起鏈接時的臨時端口的範圍,預設的已經1萬多了,通常的應用就足夠了。

  若是是比較忙碌的FTP server,通常也不會同時提供給1萬多人訪問的,

  固然若是很不幸,你的服務器就要提供不少,那麼能夠修改first的值,好比直接用1024開始

  #########################

  net.inet.ip.redirect: 1

  #########################

  設置爲0,屏蔽ip重定向功能

  ###########################

  net.inet.ip.rtexpire: 3600

  net.inet.ip.rtminexpire: 10

  ########################

  不少apache產生的CLOSE_WAIT狀態,這種狀態是等待客戶端關閉,可是客戶端那邊並無正常的關閉,因而留下不少這樣的東東。

  建議都修改成2

  #########################

  以上內容未經本站驗證,請在使用以前使用sysctl grep option對選項默認值進行查找,對於命令沒法搜索到的選項請謹慎操做,可能致使沒法啓動系統或者系統某些功能異常.

相關文章
相關標籤/搜索