Linux性能調(diào)優(yōu),從優(yōu)化思路說起

2021-02-23    分類: 網(wǎng)站建設

Linux操作系統(tǒng)是一個開源產(chǎn)品,也是一個開源軟件的實踐和應用平臺,在這個平臺下有無數(shù)的開源軟件支撐,我們常見的apache、tomcat、mysql、php等等,開源軟件的大理念是自由、開放,那么linux作為一個開源平臺,最終要實現(xiàn)的是通過這些開源軟件的支持,以最低廉的成本,達到應用最優(yōu)的性能。因此,談到性能問題,主要實現(xiàn)的是linux操作系統(tǒng)和應用程序的好結(jié)合。

一、性能問題綜述

系統(tǒng)的性能是指操作系統(tǒng)完成任務的有效性、穩(wěn)定性和響應速度。Linux系統(tǒng)管理員可能經(jīng)常會遇到系統(tǒng)不穩(wěn)定、響應速度慢等問題,例如在linux上搭建了一個web服務,經(jīng)常出現(xiàn)網(wǎng)頁無法打開、打開速度慢等現(xiàn)象,而遇到這些問題,就有人會抱怨linux系統(tǒng)不好,其實這些都是表面現(xiàn)象。操作系統(tǒng)完成一個任務時,與系統(tǒng)自身設置、網(wǎng)絡拓樸結(jié)構(gòu)、路由設備、路由策略、接入設備、物理線路等多個方面都密切相關(guān),任何一個環(huán)節(jié)出現(xiàn)問題,都會影響整個系統(tǒng)的性能。因此當linux應用出現(xiàn)問題時,應當從應用程序、操作系統(tǒng)、服務器硬件、網(wǎng)絡環(huán)境等方面綜合排查,定位問題出現(xiàn)在哪個部分,然后集中解決。

在應用程序、操作系統(tǒng)、服務器硬件、網(wǎng)絡環(huán)境等方面,影響性能大的是應用程序和操作系統(tǒng)兩個方面,因為這兩個方面出現(xiàn)的問題不易察覺,隱蔽性很強。而硬件、網(wǎng)絡方面只要出現(xiàn)問題,一般都能馬上定位。下面主要講解操作系統(tǒng)方面的性能調(diào)優(yōu)思路,應用程序方面需要具體問題具體對待。

以下從影響Linux性能的因素、分析性能涉及的人員、系統(tǒng)性能優(yōu)化工具、系統(tǒng)性能評價標準四個方面介紹優(yōu)化Linux的一般思路和方法。

二、影響Linux性能的因素

2.1系統(tǒng)硬件資源

1.CPU

CPU是操作系統(tǒng)穩(wěn)定運行的根本,CPU的速度與性能在很大程度上決定了系統(tǒng)整體的性能,因此,CPU數(shù)量越多、主頻越高,服務器性能也就相對越好。但事實并非完全如此。

目前大部分CPU在同一時間內(nèi)只能運行一個線程,超線程的處理器可以在同一時間運行多個線程,因此,可以利用處理器的超線程特性提高系統(tǒng)性能。在Linux系統(tǒng)下,只有運行SMP內(nèi)核才能支持超線程,但是,安裝的CPU數(shù)量越多,從超線程獲得的性能方面的提高就越少。另外,Linux內(nèi)核會把多核的處理器當作多個單獨的CPU來識別,例如兩個4核的CPU,在Lnux系統(tǒng)下會被當作8個單核CPU。但是從性能角度來講,兩個4核的CPU和8個單核的CPU并不完全等價,根據(jù)權(quán)威部門得出的測試結(jié)論,前者的整體性能要比后者低25%~30%。

可能出現(xiàn)CPU瓶頸的應用有db服務器、動態(tài)Web服務器等,對于這類應用,要把CPU的配置和性能放在主要位置。

2.內(nèi)存

內(nèi)存的大小也是影響Linux性能的一個重要的因素,內(nèi)存太小,系統(tǒng)進程將被阻塞,應用也將變得緩慢,甚至失去響應;內(nèi)存太大,導致資源浪費。Linux系統(tǒng)采用了物理內(nèi)存和虛擬內(nèi)存兩種方式,虛擬內(nèi)存雖然可以緩解物理內(nèi)存的不足,但是占用過多的虛擬內(nèi)存,應用程序的性能將明顯下降,要保證應用程序的高性能運行,物理內(nèi)存一定要足夠大;但是過大的物理內(nèi)存,會造成內(nèi)存資源浪費,例如,在一個32位處理器的Linux操作系統(tǒng)上,超過8GB的物理內(nèi)存都將被浪費。因此,要使用更大的內(nèi)存,建議安裝64位的操作系統(tǒng),同時開啟Linux的大內(nèi)存內(nèi)核支持。

由于處理器尋址范圍的限制,在32位Linux操作系統(tǒng)上,應用程序單個進程大只能使用4GB的內(nèi)存,這樣以來,即使系統(tǒng)有更大的內(nèi)存,應用程序也無法“享”用,解決的辦法就是使用64位處理器,安裝64位操作系統(tǒng)。在64位操作系統(tǒng)下,可以滿足所有應用程序?qū)?nèi)存的使用需求 ,幾乎沒有限制。

可能出現(xiàn)內(nèi)存性能瓶頸的應用有NOSQL服務器、數(shù)據(jù)庫服務器、緩存服務器等,對于這類應用要把內(nèi)存大小放在主要位置。

3.磁盤I/O性能

磁盤的I/O性能直接影響應用程序的性能,在一個有頻繁讀寫的應用中,如果磁盤I/O性能得不到滿足,就會導致應用停滯。好在現(xiàn)今的磁盤都采用了很多方法來提高I/O性能,比如常見的磁盤RAID技術(shù)。
通過RAID技術(shù)組成的磁盤組,就相當于一個大硬盤,用戶可以對它進行分區(qū)格式化、建立文件系統(tǒng)等操作,跟單個物理硬盤一模一樣,唯一不同的是RAID磁盤組的I/O性能比單個硬盤要高很多,同時在數(shù)據(jù)的安全性也有很大提升。

根據(jù)磁盤組合方式的不同,RAID可以分為RAID0,RAID1、RAID2、RAID3、RAID4、RAID5、RAID6、RAID7、RAID0+1、RAID10等級別,常用的RAID級別有RAID0、RAID1、RAID5、RAID0+1,這里進行簡單介紹。

? RAID 0:通過把多塊硬盤粘合成一個容量更大的硬盤組,提高了磁盤的性能和吞吐量。這種方式成本低,要求至少兩個磁盤,但是沒有容錯和數(shù)據(jù)修復功能,因而只能用在對數(shù)據(jù)安全性要求不高的環(huán)境中。
? RAID 1:也就是磁盤鏡像,通過把一個磁盤的數(shù)據(jù)鏡像到另一個磁盤上,大限度地保證磁盤數(shù)據(jù)的可靠性和可修復性,具有很高的數(shù)據(jù)冗余能力,但磁盤利用率只有50%,因而,成本高,多用在保存重要數(shù)據(jù)的場合。
? RAID5:采用了磁盤分段加奇偶校驗技術(shù),從而提高了系統(tǒng)可靠性,RAID5讀出效率很高,寫入效率一般,至少需要3塊盤。允許一塊磁盤故障,而不影響數(shù)據(jù)的可用性。
? RAID0+1:把RAID0和RAID1技術(shù)結(jié)合起來就成了RAID0+1,至少需要4個硬盤。此種方式的數(shù)據(jù)除分布在多個盤上外,每個盤都有其鏡像盤,提供全冗余能力,同時允許一個磁盤故障,而不影響數(shù)據(jù)可用性,并具有快速讀/寫能力。

通過了解各個RAID級別的性能,可以根據(jù)應用的不同特性,選擇適合自身的RAID級別,從而保證應用程序在磁盤方面達到最優(yōu)性能。

4.網(wǎng)絡寬帶

Linux下的各種應用,一般都是基于網(wǎng)絡的,因此網(wǎng)絡帶寬也是影響性能的一個重要因素,低速的、不穩(wěn)定的網(wǎng)絡將導致網(wǎng)絡應用程序的訪問阻塞,而穩(wěn)定、高速的網(wǎng)絡帶寬,可以保證應用程序在網(wǎng)絡上暢通無阻地運行。幸運的是,現(xiàn)在的網(wǎng)絡一般都是千兆帶寬或光纖網(wǎng)絡,帶寬問題對應用程序性能造成的影響也在逐步降低。

2.2 操作系統(tǒng)相關(guān)資源

基于操作系統(tǒng)的性能優(yōu)化也是多方面的,可以從系統(tǒng)安裝、系統(tǒng)內(nèi)核參數(shù)、網(wǎng)絡參數(shù)、文件系統(tǒng)等幾個方面進行衡量,下面依次進行簡單介紹。

1.系統(tǒng)安裝優(yōu)化

系統(tǒng)優(yōu)化可以從安裝操作系統(tǒng)開始,當安裝Linux系統(tǒng)時,磁盤的劃分,SWAP內(nèi)存的分配都直接影響以后系統(tǒng)的運行性能,例如,磁盤分配可以遵循應用的需求:對于對寫操作頻繁而對數(shù)據(jù)安全性要求不高的應用,可以把磁盤做成RAID 0;而對于對數(shù)據(jù)安全性較高,對讀寫沒有特別要求的應用,可以把磁盤做成RAID 1;對于對讀操作要求較高,而對寫操作無特殊要求,并要保證數(shù)據(jù)安全性的應用,可以選擇RAID 5;對于對讀寫要求都很高,并且對數(shù)據(jù)安全性要求也很高的應用,可以選擇RAID10/01。這樣通過不同的應用需求設置不同的RAID級別,在磁盤底層對系統(tǒng)進行優(yōu)化操作。

隨著內(nèi)存價格的降低和內(nèi)存容量的日益增大,對虛擬內(nèi)存SWAP的設定,現(xiàn)在已經(jīng)沒有了所謂虛擬內(nèi)存是物理內(nèi)存兩倍的要求,但是SWAP的設定還是不能忽略,根據(jù)經(jīng)驗,如果內(nèi)存較?。ㄎ锢韮?nèi)存小于4GB),一般設置SWAP交換分區(qū)大小為內(nèi)存的2倍;如果物理內(nèi)存大于8GB小于16GB,可以設置SWAP大小等于或略小于物理內(nèi)存即可;如果內(nèi)存大小在16GB以上,原則上可以設置SWAP為0,但并不建議這么做,因為設置一定大小的SWAP還是有一定作用的。

2.內(nèi)核參數(shù)優(yōu)化

系統(tǒng)安裝完成后,優(yōu)化工作并沒有結(jié)束,接下來還可以對系統(tǒng)內(nèi)核參數(shù)進行優(yōu)化,不過內(nèi)核參數(shù)的優(yōu)化要和系統(tǒng)中部署的應用結(jié)合起來整體考慮。例如,如果系統(tǒng)部署的是Oracle數(shù)據(jù)庫應用,那么就需要對系統(tǒng)共享內(nèi)存段(kernel.shmmax、kernel.shmmni、kernel.shmall)、系統(tǒng)信號量(kernel.sem)、文件句柄(fs.file-max)等參數(shù)進行優(yōu)化設置;如果部署的是Web應用,那么就需要根據(jù)Web應用特性進行網(wǎng)絡參數(shù)的優(yōu)化,例如修改net.ipv4.ip_local_port_range、net.ipv4.tcp_tw_reuse、net.core.somaxconn等網(wǎng)絡內(nèi)核參數(shù)。

3.文件系統(tǒng)優(yōu)化

文件系統(tǒng)的優(yōu)化也是系統(tǒng)資源優(yōu)化的一個重點,在Linux下可選的文件系統(tǒng)有ext2、ext3、ReiserFS、ext4、xfs,根據(jù)不同的應用,選擇不同的文件系統(tǒng)。

Linux標準文件系統(tǒng)是從VFS開始的,然后是ext,接著就是ext2,應該說,ext2是Linux上標準的文件系統(tǒng),ext3是在ext2基礎(chǔ)上增加日志形成的,從VFS到ext4,其設計思想沒有太大變化,都是早期UNIX家族基于超級塊和inode的設計理念。

XFS文件系統(tǒng)是一個高級日志文件系統(tǒng),XFS通過分布處理磁盤請求、定位數(shù)據(jù)、保持Cache 的一致性來提供對文件系統(tǒng)數(shù)據(jù)的低延遲、高帶寬的訪問,因此,XFS極具伸縮性,非常健壯,具有優(yōu)秀的日志記錄功能、可擴展性強、快速寫入性能等優(yōu)點。

目前服務器端ext4和xfs是主流文件系統(tǒng),如何選擇合適的文件系統(tǒng),需要根據(jù)文件系統(tǒng)的特點加上業(yè)務的需求綜合來定。

2.3 、應用程序軟件資源

應用程序的優(yōu)化其實是整個優(yōu)化工程的核心,如果一個應用程序存在BUG,那么即使所有其他方面都達到了最優(yōu)狀態(tài),整個應用系統(tǒng)還是性能低下,所以,對應用程序的優(yōu)化是性能優(yōu)化過程的重中之重,這就對程序架構(gòu)設計人員和程序開發(fā)人員提出了更高的要求。

三、 分析系統(tǒng)性能涉及的人員

3.1、Linux運維人員

在做性能優(yōu)化過程中,Linux運維人員承擔著很重要的任務,首先,Linux運維人員要了解和掌握操作系統(tǒng)的當前運行狀態(tài),例如系統(tǒng)負載、內(nèi)存狀態(tài)、進程狀態(tài)、CPU負荷等信息,這些信息是檢測和判斷系統(tǒng)性能的基礎(chǔ)和依據(jù);其次,Linux運維人員還有掌握系統(tǒng)的硬件信息,例如磁盤I/O、CPU型號、內(nèi)存大小、網(wǎng)卡帶寬等參數(shù)信息,然后根據(jù)這些信息綜合評估系統(tǒng)資源的使用情況;第三,作為一名Linux運維人員,還要掌握應用程序?qū)ο到y(tǒng)資源的使用情況,更深入的一點就是要了解應用程序的運行效率,例如是否有程序BUG、內(nèi)存溢出等問題,通過對系統(tǒng)資源的監(jiān)控,就能發(fā)現(xiàn)應用程序是否存在異常,如果確實是應用程序存在問題,需要把問題立刻反映給程序開發(fā)人員,進而改進或升級程序。

性能優(yōu)化本身就是一個復雜和繁瑣的過程,Linux運維人員只有了解了系統(tǒng)硬件信息、網(wǎng)絡信息、操作系統(tǒng)配置信息和應用程序信息才能有針對性地的展開對服務器性能優(yōu)化,這就要求Linux運維人員有充足的理論知識、豐富的實戰(zhàn)經(jīng)驗以及縝密分析問題的頭腦。

3.2、系統(tǒng)架構(gòu)設計人員

系統(tǒng)性能優(yōu)化涉及的第二類人員就是應用程序的架構(gòu)設計人員。如果Linux運維人員在經(jīng)過綜合判斷后,發(fā)現(xiàn)影響性能的是應用程序的執(zhí)行效率,那么程序架構(gòu)設計人員就要及時介入,深入了解程序運行狀態(tài)。首先,系統(tǒng)架構(gòu)設計人員要跟蹤了解程序的執(zhí)行效率,如果執(zhí)行效率存在問題,要找出哪里出現(xiàn)了問題;其次,如果真的是架構(gòu)設計出現(xiàn)了問題,那么就要馬上優(yōu)化或改進系統(tǒng)架構(gòu),設計更好的應用系統(tǒng)架構(gòu)。

3.3、軟件開發(fā)人員

系統(tǒng)性能優(yōu)化最后一個環(huán)節(jié)涉及的是程序開發(fā)人員,在Linux運維人員或架構(gòu)設計人員找到程序或結(jié)構(gòu)瓶頸后,程序開發(fā)人員要馬上介入進行相應的程序修改。修改程序要以程序的執(zhí)行效率為基準,改進程序的邏輯,有針對性地進行代碼優(yōu)化。例如,Linux運維人員在系統(tǒng)中發(fā)現(xiàn)有條SQL語句耗費大量的系統(tǒng)資源,抓取這條執(zhí)行的SQL語句,發(fā)現(xiàn)此SQL語句的執(zhí)行效率太差,是開發(fā)人員編寫的代碼執(zhí)行效率低造成的,這就需要把這個信息反饋給開發(fā)人員,開發(fā)人員在收到這個問題后,可以有針對性的進行SQL優(yōu)化,進而實現(xiàn)程序代碼的優(yōu)化。

從上面這個過程可以看出,系統(tǒng)性能優(yōu)化一般遵循的流程是:首先Linux運維人員查看系統(tǒng)的整體狀況,主要從系統(tǒng)硬件、網(wǎng)絡設備、操作系統(tǒng)配置、應用程序架構(gòu)和程序代碼五個方面進行綜合判斷,如果發(fā)現(xiàn)是系統(tǒng)硬件、網(wǎng)絡設備或者操作系統(tǒng)配置問題,Linux運維人員可以根據(jù)情況自主解決;如果發(fā)現(xiàn)是程序結(jié)構(gòu)問題,就需要提交給程序架構(gòu)設計人員;如果發(fā)現(xiàn)是程序代碼執(zhí)行問題,就交給開發(fā)人員進行代碼優(yōu)化。這樣就完成了一個系統(tǒng)性能優(yōu)化的過程。

四、調(diào)優(yōu)總結(jié)

系統(tǒng)性能優(yōu)化是個涉及面廣、繁瑣、長久的工作,尋找出現(xiàn)性能問題的根源往往是最難的部分,一旦找到出現(xiàn)問題的原因,性能問題也就迎刃而解。因此,解決問題的思路變得非常重要。

例如,linux系統(tǒng)下的一個網(wǎng)站系統(tǒng),用戶反映,網(wǎng)站訪問速度很慢,有時無法訪問。

針對這個問題,第一步要做的是檢測網(wǎng)絡,可以通過ping命令檢查網(wǎng)站的域名解析是否正常,同時,ping服務器地址的延時是否過大等等,通過這種方式,首先排除網(wǎng)絡可能出現(xiàn)的問題;如果網(wǎng)絡沒有問題,接著進入第二步,對linux系統(tǒng)的內(nèi)存使用狀況進行檢查,因為網(wǎng)站響應速度慢,一般跟內(nèi)存關(guān)聯(lián)比較大,通過free、vmstat等命令判斷內(nèi)存資源是否緊缺,如果內(nèi)存資源不存在問題,進入第三步,檢查系統(tǒng)CPU的負載狀況,可以通過sar、vmstat、top等命令的輸出綜合判斷CPU是否存在過載問題,如果CPU沒有問題,繼續(xù)進入第四步,檢查系統(tǒng)的磁盤I/O是否存在瓶頸,可以通過iostat、vmstat等命令檢查磁盤的讀寫性能,如果磁盤讀寫也沒有問題,linux系統(tǒng)自身的性能問題基本排除,最后要做的是檢查程序本身是否存在問題。通過這樣的思路,層層檢測,步步排查,性能問題就“無處藏身”,查找出現(xiàn)性能問題的環(huán)節(jié)也就變得非常簡單。

當前名稱:Linux性能調(diào)優(yōu),從優(yōu)化思路說起
網(wǎng)站鏈接:http://www.muchs.cn/news32/102582.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、移動網(wǎng)站建設電子商務、網(wǎng)站設計公司、網(wǎng)站營銷自適應網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設