http://www.cnblogs.com/L-H-R-X-hehe/p/3963442.htmlhtml
Linux是一套無償使用和自由傳播的類Unix操做系統,Linux不一樣的發行版本和不一樣的內核對各項參數及設置均作了改動,從而使得系統可以得到更好的性能。本文分享了幾種技巧對Linux操做系統進行性能的優化。web
按照傳統,Linux不一樣的發行版本和不一樣的內核對各項參數及設置均作了改動,從而使得系統可以得到更好的性能。下邊將分四部分介紹在Red Hat Enterprise Linux AS和SUSE LINUX Enterprise Server系統下,如何用如下幾種技巧進行性能的優化:瀏覽器
QUOTE:緩存
一、Disabling daemons (關閉 daemons)安全
二、Shutting down the GUI (關閉GUI)服務器
三、Changing kernel parameters (改變內核參數)cookie
四、Kernel parameters (內核參數)網絡
五、Tuning the processor subsystem(處理器子系統調優)ssh
六、Tuning the memory subsystem (內存子系統調優)
七、Tuning the file system(文件系統子系統調優)
八、Tuning the network subsystem(網絡子系統調優)
1 關閉daemons
有些運行在服務器中的daemons (後臺服務),並非徹底必要的。關閉這些daemons可釋放更多的內存、減小啓動時間並減小CPU處理的進程數。減小daemons數量的同時也加強了服務器的安全性。缺省狀況下,多數服務器均可以安全地停掉幾個daemons。
Table 10-1列出了Red Hat Enterprise Linux AS下的可調整進程.
Table 10-2列出了SUSE LINUX Enterprise Server下的可調整進程.
注意:關閉xfs daemon將致使不能啓動X,所以只有在不須要啓動GUI圖形的時候才能夠關閉xfs daemon。使用startx命令前,開啓xfs daemon,恢復正常啓動X。
能夠根據須要中止某個進程,如要中止sendmail 進程,輸入以下命令:
Red Hat: /sbin/service sendmail stop SUSE LINUX: /etc/init.d/sendmail stop
也能夠配置在下次啓動的時候不自動啓動某個進程,仍是sendmail:
Red Hat: /sbin/chkconfig sendmail off SUSE LINUX: /sbin/chkconfig -s sendmail off
除此以外,LINUX還提供了圖形方式下的進程管理功能。對於Red Hat,啓動GUI,使用以下命令: /usr/bin/redhat-config-services 或者鼠標點擊 Main Menu -> System Settings ->
Server Settings -> Services.
提示:並不是全部的daemons都會顯示在該配置界面,如要看到所有的daemons,使用以下命令:
/sbin/chkconfig –list
對於SUSE LINUX,圖形界面是YaST2, 可用以下命令來啓動
/sbin/yast2 runlevel 或者如Figure 10-2所示用鼠標點擊
Browse: YaST/ ?> YaST modules ?> System ?> Runlevel editor
2 關閉GUI
只要有可能,就不要在Linux server上啓動GUI圖形,一般在Linux server上,沒有必要啓動GUI。,全部的管理任務都可在命令行方式下完成、或者經過重定向X和Web瀏覽器界面。有幾個可用的基於Web的工具(例如webmin, Linuxconf, 和SWAT).
須要的時候啓動GUI,用完立刻關閉GUI。多數狀況,服務器運行在runlevel 3,即在機器啓動的時候不進入GUI。命令行方式下,執行startx 來啓動Xserver.
1. 查看runlevel的命令:runlevel
會顯示出上次和當前的runlevel (如N 5 表示沒有上次的runlevel (N) ,當前的runlevel是5).
2. 在不一樣的runlevels之間切換,使用命令 init
如切換到run level 3,鍵入命令init 3
下邊是對Linux中不一樣runlevels的簡要描述
– 0 – Halt 停機(不要將0設置爲缺省,不然服務器啓動後就會立刻關閉)
– 1 - Single user mode 單用戶模式
– 2 - Multi-user 不帶NFS的多用戶模式 (若是沒有網絡,至關與3)
– 3 - Full multi-user mode 徹底多用戶模式
– 4 – Unused 未使用
– 5 - X11
– 6 – Reboot 重啓(不要將6設置爲缺省,不然服務器會不斷地重啓)
修改文件/etc/inittab 來設置機器啓動的runlevel,如Figure 10-3。
對於SUSE LINUX Enterprise Server, 執行YaST runlevel 命令改變缺省runlevel值.
如圖Figure 10-2。
缺省狀況下,保存了6個控制檯:F1……F6。爲節省內存,能夠減小爲3個。使用mingetty ttyx命令來實現,如圖Figure 10-3
提示:即使是已經關閉了GUI,依然能夠遠程鏈接並啓動GUI,可使用ssh-x。
3 改變內核參數
Linux內核是操做系統的核心,對全部的Linux發行版本是通用的。內核參數能夠改變,在命令行下執行sysctl 命令。
提示:缺省狀況下,LINUX內核包括沒必要重啓就可使用sysctl命令的必要的模塊。儘管如此,若是你在安裝系統的時候選擇移除該功能,那麼你只有從新啓動LINUX,纔可使得改變生效。
SUSE LINUX 提供了圖形界面下的修改方式。使用以下命令來啓動powertweak工具:
/sbin/yast powertweak
使用以下命令啓動基於字符的管理菜單:
/sbin/yast2 powertweak
Red Hat也提供了圖形界面下更改sysctl參數的方式:
/usr/bin/redhat-config-proc
如圖Figure 10-5:
Parameter storage locations
內核參數保存在/proc(特別是/proc/sys),提供了內核、處理器、內存、網絡及其餘組件的相關參數。每一個執行的進程都有一個以相應PID命名的目錄。Figure 10-3列出了一些包括內核信息的文件。
4 內核的參數
Table 10-5 列出了Red Hat V2.4與性能關係密切的一些內核參數。
5 處理器子系統調優
處理器對於應用和數據庫服務器來說是最重要的硬件子系統之一。然而在這些系統中,CPU常常是性能的瓶頸。
在配有Xeon處理器的高端服務器中,你能夠啓用或者關閉Hyper-Threading(超線程功能)。Hyper-Threading在操做系統裏將一顆處理器虛擬化爲兩顆使用。Red Hat Enterprise Linux AS和SUSE LINUX Enterprise Server都支持該功能,從而可使處理器在同一時刻執行兩個線程或者進程。對於支持Hyper-Threading的操做系統和軟件來講,不須要增長CPU時鐘頻率便可使性能獲得明顯的改進。例如,在4路的服務器上起用Hyper-Threading功能並使用性能監測工具(如top)來檢測,能夠看到8顆處理器。如圖Figure 10-6
提示,對於Hyper-Threading:
_ 基於SMP內核的LINUX才能夠支持Hyper-Threading
_ 安裝的CPU數量越多,從Hyper-Threading得到的性能上的提升就越少。可得到的性能提升大約爲:
– 2顆物理CPU: 15-25%
– – 4顆物理CPU: 1-13%
– – 8顆物理CPU: 0-5%
– 如需更多的關於Hyper-Threading信息,可查看更多。
EM64T是Intel IA-32處理器的64-bit擴展。意思是,處理器可以支持更多的內存並支持64-bit應用同時徹底兼容現存的32-bit應用。Red Hat Enterprise Linux 3 Update 2 和 SUSE LINUX Enterprise Server 9支持這種新的處理器。如需更多的EM64T信息,可查看更多。
選擇正確的內核
Red Hat Enterprise Linux AS和SUSE LINUX Enterprise Server都包括有若干個內核包,如Table 10-6所列。選擇合適的內核對性能很是重要。
6 內存子系統的調優
內存子系統的調優不是很容易,須要不停地監測來保證內存的改變不會對服務器的其餘子系統形成負面影響。若是要改變虛擬內存參數(在/proc/sys/vm),建議您每次只改變一個參數而後監測效果。對與虛擬內存的調整包括如下幾個項目:
配置Linux內核如何更新dirty buffers到磁盤。磁盤緩衝區用於暫存磁盤的數據。相對於內存來說,磁盤緩衝區的速度很慢。所以,若是服務器使用這類內存,性能會成問題。當緩衝區內的數據徹底dirty,使用:sysctl -w vm.bdflush="30 500 0 0 500 3000 60 20 0"
vm.bdflush有9個參數,可是建議您只改變其中的3個:
配置kswapd daemon,指定Linux的內存交換頁數量
sysctl -w vm.kswapd="1024 32 64"
三個參數的描述以下:
– tries_base 至關於內核每次所交換的「頁」的數量的四倍。對於有不少交換信息的系統,增長這個值能夠改進性能。
– tries_min 是每次kswapd swaps出去的pages的最小數量。
– swap_cluster 是kswapd 即刻寫如的pages數量。數值小,會提升磁盤I/O的性能;數值大可能也會對請求隊列產生負面影響。
若是要對這些參數進行改動,請使用工具vmstat檢查對性能的影響。其它能夠改進性能的虛擬內存參數爲:
_ buffermem _ freepages _ overcommit_memory _ page-cluster _ pagecache _ pagetable_cache
7 網絡子系統的調優
操做系統安裝完畢,就要對網絡子系統進行調優。對其它子系統的影響:影響CPU利用率,尤爲在有大量TCP鏈接、塊尺寸又很是小時,內存的使用會明顯增長。
如何預防性能降低
以下的sysctl命令用於改變安全設置,可是它也能夠防止網絡性能的降低。這些命令被設置爲缺省值。
◆關閉以下參數能夠防止黑客對服務器IP地址的攻擊
◆開啓TCP SYN cookies,保護服務器避免受syn-flood攻擊,包括服務取決denial-of-service (DoS) 或者分佈式服務拒絕distributed denial-of-service (DDoS) (僅適用Red Hat Enterprise Linux AS)
◆如下命令使服務器忽略來自被列入網關的服務器的重定向。因重定向能夠被用來進行攻擊,因此咱們只接受有可靠來源的重定向。
另外,你能夠配置接受或拒絕任何ICMP重定向。ICMP重定向是路由器傳輸路由信息的機制。好比,當網關接收到來自所接網絡主機的Internet數據報時,網關能夠發送重定向信息到一臺主機。網關檢查路由表得到下一個網關的地址,第二個網關將數據報路由到目標網絡.關閉這些重定向得命令以下:
◆若是這個服務器不是一臺路由器,那麼它不會發送重定向,因此能夠關閉該功能:
◆配置服務器拒絕接受廣播風暴或者smurf 攻擊attacks:
◆忽略全部icmp包或者pings:
◆有些路由器針對廣播禎發送無效的迴應,每一個都產生警告並在內核產生日誌.這些迴應能夠被忽略:
8.針對TCP和UDP的調優
下邊的命令用來對鏈接數量很是大的服務器進行調優。
◆對於同時支持不少鏈接的服務器,新的鏈接能夠從新使用TIME-WAIT套接字. 這對於Web服務器很是有效:
若是你使用該命令,還要啓動TIME-WAIT 套接字狀態的快速循環功能:
圖Figure 10-7顯示出將這些功能啓用,鏈接數量明顯下降.由於每一個TCP傳輸都包含遠程客戶端的協議信息緩存,因此有利於提升性能.緩存中存放round-trip時間、最大segment大小、擁塞窗口的信息。
◆參數tcp_fin_timeout 是套接字關閉時,保持FIN-WAIT-2狀態的時間。一個TCP鏈接以three-segment SYN序列開始, 以three-segment FIN序列結束.均不保留數據.經過改變tcp_fin_timeout的值, 從FIN序列到內存能夠空閒出來處理新鏈接的時間縮短了,使性能獲得改進.改變這個值的前要通過認真的監測,避免由於死套接字形成內存溢出.
◆服務器的一個問題是,同一時刻的大量TCP鏈接裏有不少的鏈接被打開可是沒有使用. TCP的keepalive功能檢測到這些鏈接,缺省狀況下,在2小時以後丟掉. 2個小時的可能致使內存過分使用,下降性能.所以改爲1800秒(30分鐘)是個更好的選擇:
◆對於全部協議的隊列,設置最大系統發送緩存(wmem) 和接收緩存(rmem)到8MB
這些設置指定了建立TCP套接字時爲其分配的內存容量. 另外,使用以下命令發送和接收緩存.該命令設定了三個值:最小值、初始值和最大值:
第三個值必須小於或等於wmem_max和rmem_max。
◆(SUSE LINUX Enterprise Server適用) 經過保留路徑驗證來源數據包。缺省狀況下,路由器轉發全部的數據包,即使是明顯的異常網絡流量。經過啓動和是的過濾功能,丟掉這些數據包:
◆當服務器負載繁重或者是有不少客戶端都是超長延時的鏈接故障,可能會致使half-open鏈接數量的增長。這對於Web服務器很來說很日常,尤爲有不少撥號客戶時.這些half-open鏈接保存在 backlog connections 隊列中.將這個值最少設置爲4096 (缺省爲1024). 即使是服務器不接收這類鏈接,設置這個值還能防止受到denial-of-service (syn-flood)的攻擊.
◆設置ipfrag參數,尤爲是NFS和Samba服務器。這裏,咱們能夠設置用於從新組合IP碎片的最大、最小內存。當ipfrag_high_thresh值被指派,碎片會被丟棄直到達到ipfrag_low_thres值。
當TCP數據包傳輸發生錯誤時,開始碎片整理。有效的數據包保留在內存,同時損壞的數據包被轉發。例如,設置可用內存範圍從256 MB到384 MB
【編輯推薦】