Linux性能優(yōu)化一直是一個常見的話題,相信每個人都對優(yōu)化措施有所了解。但是,Linux性能優(yōu)化從哪些方面入手?這背后的深層原則是什么,為什么要這樣做。下面的文章詳細分析了影響Linux系統(tǒng)硬件性能,操作系統(tǒng)和每個人的操作系統(tǒng)的三個主要因素,想學(xué)習(xí)的可以從這些思想中獲得優(yōu)化的特定解決方案。
一、系統(tǒng)硬件
1、CPU
眾所周知,操作系統(tǒng)運行的根本就是一個穩(wěn)定的CPU,它的性能從根本上決定了系統(tǒng)整體的性能,因此Linux性能優(yōu)化可以首先從CPU入手。一般來講CPU數(shù)量越多、主頻越高,服務(wù)器性能也就相對越好。不過也有例外的情況,超線程的處理器可以在同一時間運行多個線程,在Linux系統(tǒng)下,只有運行SMP內(nèi)核才能支持超線程,但是安裝的CPU數(shù)量越多,從超線程獲得的性能方面的提高就越少??赡艹霈F(xiàn)CPU瓶頸的應(yīng)用有db服務(wù)器、動態(tài)Web服務(wù)器等,對于這類應(yīng)用,要把CPU的配置和性能放在主要位置。
2、內(nèi)存
除了CPU之外,內(nèi)存的大小也是影響Linux性能的一個重要的方面。如果內(nèi)存太小,系統(tǒng)進程將被阻塞,應(yīng)用也將變得緩慢,甚至失去響應(yīng);內(nèi)存太大,導(dǎo)致資源浪費。因此,要使用更大的內(nèi)存,建議安裝64位的操作系統(tǒng),同時開啟Linux的大內(nèi)存內(nèi)核支持。由于處理器尋址范圍的限制,在32位Linux操作系統(tǒng)上,應(yīng)用程序單個進程最大只能使用4GB的內(nèi)存,這樣以來,即使系統(tǒng)有更大的內(nèi)存,應(yīng)用程序也無法“享”用,解決的辦法就是使用64位處理器,安裝64位操作系統(tǒng)。在64位操作系統(tǒng)下,可以滿足所有應(yīng)用程序?qū)?nèi)存的使用需求 ,幾乎沒有限制。Linux系統(tǒng)采用了物理內(nèi)存和虛擬內(nèi)存兩種方式,虛擬內(nèi)存雖然可以緩解物理內(nèi)存的不足,但是占用過多的虛擬內(nèi)存,應(yīng)用程序的性能將明顯下降,要保證應(yīng)用程序的高性能運行,物理內(nèi)存一定要足夠大;但是過大的物理內(nèi)存,會造成內(nèi)存資源浪費。
3、磁盤I/O性能
磁盤的I/O性能直接影響應(yīng)用程序的性能,在一個有頻繁讀寫的應(yīng)用中,如果磁盤I/O性能得不到滿足,就會導(dǎo)致應(yīng)用停滯。好在現(xiàn)今的磁盤都采用了很多方法來提高I/O性能,比如常見的磁盤RAID技術(shù)。通過RAID技術(shù)組成的磁盤組,就相當(dāng)于一個大硬盤,用戶可以對它進行分區(qū)格式化、建立文件系統(tǒng)等操作,跟單個物理硬盤一模一樣,唯一不同的是RAID磁盤組的I/O性能比單個硬盤要高很多,同時在數(shù)據(jù)的安全性也有很大提升。
4、網(wǎng)絡(luò)寬帶
Linux下的各種應(yīng)用,一般都是基于網(wǎng)絡(luò)的,因此網(wǎng)絡(luò)帶寬也是影響性能的一個重要方面,低速的、不穩(wěn)定的網(wǎng)絡(luò)將導(dǎo)致網(wǎng)絡(luò)應(yīng)用程序的訪問阻塞,而穩(wěn)定、高速的網(wǎng)絡(luò)帶寬,可以保證應(yīng)用程序在網(wǎng)絡(luò)上暢通無阻地運行。幸運的是,現(xiàn)在的網(wǎng)絡(luò)一般都是千兆帶寬或光纖網(wǎng)絡(luò),帶寬問題對應(yīng)用程序性能造成的影響也在逐步降低。
二、操作系統(tǒng)
1、安裝系統(tǒng)
系統(tǒng)優(yōu)化可以從安裝操作系統(tǒng)開始,當(dāng)安裝Linux系統(tǒng)時,磁盤的劃分,SWAP內(nèi)存的分配都直接影響以后系統(tǒng)的運行性能。例如,磁盤分配可以遵循應(yīng)用的需求。隨著內(nèi)存價格的降低和內(nèi)存容量的日益增大,對虛擬內(nèi)存SWAP的設(shè)定,現(xiàn)在已經(jīng)沒有了所謂虛擬內(nèi)存是物理內(nèi)存兩倍的要求,但是SWAP的設(shè)定還是不能忽略,根據(jù)經(jīng)驗,如果內(nèi)存較小,一般設(shè)置SWAP交換分區(qū)大小為內(nèi)存的2倍;如果物理內(nèi)存大于8GB小于16GB,可以設(shè)置SWAP大小等于或略小于物理內(nèi)存即可;如果內(nèi)存大小在16GB以上,原則上可以設(shè)置SWAP為0,但并不建議這么做,因為設(shè)置一定大小的SWAP還是有一定作用的。
2、內(nèi)核參數(shù)
系統(tǒng)安裝完成后,優(yōu)化工作并沒有結(jié)束,接下來還可以對系統(tǒng)內(nèi)核參數(shù)進行優(yōu)化,不過內(nèi)核參數(shù)的優(yōu)化要和系統(tǒng)中部署的應(yīng)用結(jié)合起來整體考慮。例如,如果系統(tǒng)部署的是Oracle數(shù)據(jù)庫應(yīng)用,那么就需要對系統(tǒng)共享內(nèi)存段、系統(tǒng)信號量、文件句柄等參數(shù)進行優(yōu)化設(shè)置;如果部署的是Web應(yīng)用,那么就需要根據(jù)Web應(yīng)用特性進行網(wǎng)絡(luò)參數(shù)的優(yōu)化,例如修改net.ipv4.ip_local_port_range、net.ipv4.tcp_tw_reuse、net.core.somaxconn等網(wǎng)絡(luò)內(nèi)核參數(shù)。
3、文件系統(tǒng)
文件系統(tǒng)的優(yōu)化也是系統(tǒng)資源優(yōu)化的一個重點,在Linux下可選的文件系統(tǒng)有ext2、ext3、ReiserFS、ext4、xfs,根據(jù)不同的應(yīng)用,選擇不同的文件系統(tǒng)。Linux標(biāo)準(zhǔn)文件系統(tǒng)是從VFS開始的,然后是ext,接著就是ext2,應(yīng)該說,ext2是Linux上標(biāo)準(zhǔn)的文件系統(tǒng),ext3是在ext2基礎(chǔ)上增加日志形成的,從VFS到ext4,其設(shè)計思想沒有太大變化,都是早期UNIX家族基于超級塊和inode的設(shè)計理念。XFS文件系統(tǒng)是一個高級日志文件系統(tǒng),XFS通過分布處理磁盤請求、定位數(shù)據(jù)、保持Cache 的一致性來提供對文件系統(tǒng)數(shù)據(jù)的低延遲、高帶寬的訪問,因此,XFS極具伸縮性,非常健壯,具有優(yōu)秀的日志記錄功能、可擴展性強、快速寫入性能等優(yōu)點。目前服務(wù)器端ext4和xfs是主流文件系統(tǒng),如何選擇合適的文件系統(tǒng),需要根據(jù)文件系統(tǒng)的特點加上業(yè)務(wù)的需求綜合來定。
三、應(yīng)用程序軟件
1、運維
在思考Linux性能優(yōu)化的過程中,Linux運維方面承擔(dān)著很重要的任務(wù)。首先,Linux運維人員要了解和掌握操作系統(tǒng)的當(dāng)前運行狀態(tài),這些信息是檢測和判斷系統(tǒng)性能的基礎(chǔ)和依據(jù);其次,Linux運維人員還有掌握系統(tǒng)的硬件信息,然后根據(jù)這些信息綜合評估系統(tǒng)資源的使用情況。作為一名Linux運維人員,還要掌握應(yīng)用程序?qū)ο到y(tǒng)資源的使用情況,更深入的一點就是要了解應(yīng)用程序的運行效率,通過對系統(tǒng)資源的監(jiān)控,就能發(fā)現(xiàn)應(yīng)用程序是否存在異常,如果確實是應(yīng)用程序存在問題,需要把問題立刻反映給程序開發(fā)人員,進而改進或升級程序。性能優(yōu)化本身就是一個復(fù)雜和繁瑣的過程,Linux運維人員只有了解了系統(tǒng)硬件信息、網(wǎng)絡(luò)信息、操作系統(tǒng)配置信息和應(yīng)用程序信息才能有針對性地的展開對服務(wù)器性能優(yōu)化,這就要求Linux運維人員有充足的理論知識、豐富的實戰(zhàn)經(jīng)驗以及縝密分析問題的頭腦。
2、系統(tǒng)架構(gòu)設(shè)計
系統(tǒng)性能優(yōu)化涉及的第二類人員就是應(yīng)用程序的架構(gòu)設(shè)計人員。如果在Linux運維環(huán)節(jié)經(jīng)過綜合判斷后,發(fā)現(xiàn)影響性能的是應(yīng)用程序的執(zhí)行效率,那么程序架構(gòu)設(shè)計人員就要及時介入,深入了解程序運行狀態(tài)。首先,系統(tǒng)架構(gòu)設(shè)計人員要跟蹤了解程序的執(zhí)行效率,如果執(zhí)行效率存在問題,要找出哪里出現(xiàn)了問題;其次,如果真的是架構(gòu)設(shè)計出現(xiàn)了問題,那么就要馬上優(yōu)化或改進系統(tǒng)架構(gòu),設(shè)計更好的應(yīng)用系統(tǒng)架構(gòu)。
3、軟件開發(fā)
系統(tǒng)性能優(yōu)化最后一個環(huán)節(jié)涉及的是程序開發(fā)人員,在Linux運維人員或架構(gòu)設(shè)計人員找到程序或結(jié)構(gòu)瓶頸后,程序開發(fā)人員要馬上介入進行相應(yīng)的程序修改。修改程序要以程序的執(zhí)行效率為基準(zhǔn),改進程序的邏輯,有針對性地進行代碼優(yōu)化。系統(tǒng)性能優(yōu)化一般遵循的流程是:首先Linux運維人員查看系統(tǒng)的整體狀況,如果發(fā)現(xiàn)是系統(tǒng)硬件、網(wǎng)絡(luò)設(shè)備或者操作系統(tǒng)配置問題,Linux運維人員可以根據(jù)情況自主解決;如果發(fā)現(xiàn)是程序結(jié)構(gòu)問題,就需要提交給程序架構(gòu)設(shè)計人員;如果發(fā)現(xiàn)是程序代碼執(zhí)行問題,就交給開發(fā)人員進行代碼優(yōu)化。這樣就完成了一個系統(tǒng)性能優(yōu)化的過程。
以上就是關(guān)于Linux性能優(yōu)化從哪些方面入手的全部內(nèi)容介紹,想了解更多關(guān)于Linux的信息,請繼續(xù)關(guān)注中培偉業(yè)。