目錄
一、效能問題綜述" >一、效能問題綜述
二、影響Linux效能的因素" >二、影響Linux效能的因素
三、 分析系統效能涉及的人員" >三、 分析系統效能涉及的人員
四、調優總結" >四、調優總結
首頁 系統教程 Linux Linux效能調優~

Linux效能調優~

Feb 12, 2024 pm 03:30 PM
linux linux教程 linux系統 linux作業系統 sql優化 sql語句 linux指令 shell腳本 系統安裝 資源最佳化 overflow 嵌入式linux linux入門 linux學習

Linux效能調優~

Linux作業系統是一個開源產品,它也是一個開源軟體的實踐和應用平台。在這個平台下,有無數的開源軟體支撐,如apache、tomcat、mysql、php等。開源軟體的最大理念是自由和開放。因此,作為一個開源平台,linux的目標是透過這些開源軟體的支持,以最低廉的成本,達到應用最優的效能。談到效能問題,主要實現的是linux作業系統和應用程式的最佳結合。

一、效能問題綜述

#系統的效能是指作業系統完成任務的有效性、穩定性和反應速度。 Linux系統管理員可能經常會遇到系統不穩定、反應速度慢等問題,例如在linux上搭建了一個web服務,經常出現網頁無法打開、打開速度慢等現象,而遇到這些問題,就有人會抱怨linux系統不好,其實這些都是表面現象。作業系統完成一個任務時,與系統本身設定、網路拓樸結構、路由設備、路由策略、存取設備、實體線路等多個面向都密切相關,任何一個環節出現問題,都會影響整個系統的效能。因此當linux應用程式出現問題時,應從應用程式、作業系統、伺服器硬體、網路環境等方面綜合排查,定位問題出現在哪個部分,然後集中解決。

在應用程式、作業系統、伺服器硬體、網路環境等方面,影響效能最大的是應用程式和作業系統兩個方面,因為這兩個方面出現的問題不易察覺,隱蔽性很強。而硬體、網路方面只要出現問題,一般都能馬上定位。以下主要講解作業系統方面的效能調優思路,應用程式方面需要具體問題具體對待。

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

二、影響Linux效能的因素

2.1系統硬體資源

1. CPU

CPU是作業系統穩定運作的根本,CPU的速度與效能在很大程度上決定了系統整體的效能,因此,CPU數量越多、主頻越高,伺服器效能也就相對越好。但事實並非完全如此。

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

可能出現CPU瓶頸的應用程式有db伺服器、動態Web伺服器等,對於這類應用,要把CPU的設定和效能放在主要位置。

2.記憶體

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

由於處理器尋址範圍的限制,在32位元Linux作業系統上,應用程式單一進程最大隻能使用4GB的內存,這樣以來,即使系統有更大的內存,應用程式也無法“享”用,解決的方法就是使用64位元處理器,安裝64位元作業系統。在64位元作業系統下,可以滿足所有應用程式對記憶體的使用需求 ,幾乎沒有限制。

可能出現記憶體效能瓶頸的應用程式有NOSQL伺服器、資料庫伺服器、快取伺服器等,對於這類應用程式要把記憶體大小放在主要位置。

3.磁碟I/O效能

磁碟的I/O效能直接影響應用程式的效能,在一個有頻繁讀寫的應用程式中,如果磁碟I/O效能無法滿足,就會導致應用程式停滯。還好現今的磁碟都採用了許多方法來提升I/O效能,例如常見的磁碟RAID技術。
透過RAID技術組成的磁碟組,就相當於一個大硬碟,使用者可以對它進行分割格式化、建立檔案系統等操作,跟單一實體硬碟一模一樣,唯一不同的是RAID磁碟組的I/O效能比單一硬碟要高很多,同時在資料的安全性也有很大提升。

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

#RAID 0:透過把多塊硬碟黏合成一個容量更大的硬碟組,提高了磁碟的效能和吞吐量。這種方式成本低,要求至少兩個磁碟,但是沒有容錯和資料修復功能,因而只能用在對資料安全性要求不高的環境中。
RAID 1:也就是磁碟鏡像,透過把一個磁碟的資料鏡像到另一個磁碟上,最大限度地保證磁碟資料的可靠性和可修復性,具有很高的資料冗餘餘能力,但磁碟利用率只有50%,因而,成本最高,多用在保存重要資料的場合。
RAID5:採用了磁碟分段加奇偶校驗技術,從而提高了系統可靠性,RAID5讀出效率很高,寫入效率一般,至少需要3個碟。允許一塊磁碟故障,而不影響資料的可用性。
RAID0 1:把RAID0和RAID1技術結合起來就成了RAID0 1,至少要4個硬碟。此種方式的資料除分佈在多個盤上外,每個碟都有其鏡像盤,提供全冗餘能力,同時允許一個磁碟故障,而不影響資料可用性,並具有快速讀取/寫入能力。

#透過了解各個RAID級別的效能,可以根據應用的不同特性,選擇適合自身的RAID級別,從而保證應用程式在磁碟方面達到最優效能。

4.網路寬頻

Linux下的各種應用,一般都是基於網路的,因此網路頻寬也是影響效能的一個重要因素,低速的、不穩定的網路將導致網路應用程式的存取阻塞,而穩定、高速的網絡頻寬,可以保證應用程式在網路上暢通無阻地運行。幸運的是,現在的網路一般都是千兆頻寬或光纖網絡,頻寬問題對應用程式效能造成的影響也逐漸降低。

2.2 作業系統相關資源

基於作業系統的效能最佳化也是多方面的,可以從系統安裝、系統核心參數、網路參數、檔案系統等幾個方面來衡量,以下依序進行簡單介紹。

1.系統安裝最佳化

系統最佳化可以從安裝作業系統開始,當安裝Linux系統時,磁碟的劃分,SWAP記憶體的分配都直接影響以後系統的運作效能。例如,磁碟分配可以遵循應用程式的需求:

  • 對於對寫入操作頻繁而對資料安全性要求不高的應用,可以把磁碟做成RAID 0;
  • # 而對於對資料安全性較高,對讀寫沒有特別要求的應用,可以把磁碟做成RAID 1;
  • 對於對讀取操作要求較高,而對寫入操作無特殊要求,並且要確保資料安全性的應用,可以選擇RAID 5;
  • 對於對讀寫要求都很高,並且對資料安全性要求也很高的應用,可以選擇RAID10/01。

這樣透過不同的應用需求設定不同的RAID級別,在磁碟底層對系統進行最佳化操作。

隨著記憶體價格的降低和記憶體容量的日益增大,對虛擬記憶體SWAP的設定,現在已經沒有了所謂虛擬記憶體是物理記憶體兩倍的要求,但是SWAP的設定還是不能忽略,根據經驗:

  • 若記憶體較小(實體記憶體小於4GB),一般設定SWAP交換分割區大小為記憶體的2倍;
  • 如果實體記憶體大於8GB小於16GB,可以設定SWAP大小等於或略小於實體記憶體即可;
  • 如果記憶體大小在16GB以上,原則上可以設定SWAP為0,但不建議這麼做,因為設定一定大小的SWAP還是有一定作用的。

2.核心參數優化

系統安裝完成後,優化工作並沒有結束,接下來還可以對系統核心參數進行最佳化,不過核心參數的優化要和系統中部署的應用結合起來整體考慮。

例如,如果系統部署的是Oracle資料庫應用,那麼就需要對系統共享記憶體段(kernel.shmmax、kernel.shmmni、kernel.shmall)、系統信號量(kernel.sem)、檔案句柄(fs. file-max)等參數進行最佳化設定;如果部署的是Web應用,那麼就需要根據Web應用特性進行網路參數的最佳化,例如修改net.ipv4.ip_local_port_range、net.ipv4.tcp_tw_reuse、net.core.somaxconn等網路核心參數。

3.檔案系統優化

檔案系統的最佳化也是系統資源最佳化的重點,在Linux下可選的檔案系統有ext2、ext3、ReiserFS、ext4、xfs,根據不同的應用,選擇不同的檔案系統。

Linux標準檔案系統是從VFS開始的,然後是ext,接著就是ext2,應該說,ext2是Linux上標準的檔案系統,ext3是在ext2基礎上增加日誌形成的,從VFS到ext4,其設計想法沒有太大變化,都是早期UNIX家族基於超級塊和inode的設計理念。

XFS檔案系統是一個高級日誌檔案系統,XFS透過分散處理磁碟請求、定位資料、保持Cache 的一致性來提供對檔案系統資料的低延遲、高頻寬的訪問,因此,XFS極具伸縮性,非常健壯,具有優秀的日誌記錄功能、可擴充性強、快速寫入效能等優點。

目前伺服器端ext4和xfs是主流檔案系統,如何選擇適當的檔案系統,需要根據檔案系統的特性加上業務的需求綜合來定。

2.3 、應用程式軟體資源

應用程式的最佳化其實是整個最佳化工程的核心,如果一個應用程式存在BUG,那麼即使所有其他方面都達到了最優狀態,整個應用系統還是效能低下,所以,對應用程式的最佳化是效能優化過程的重中之重,這對程式架構設計人員和程式開發人員提出了更高的要求。

三、 分析系統效能涉及的人員

3.1、Linux維運人員

#在做效能最佳化過程中,Linux維運人員承擔著很重要的任務。

  • 首先,Linux維運人員要了解和掌握作業系統的當前運作狀態,例如係統負載、記憶體狀態、進程狀態、CPU負載等信息,這些資訊是檢測和判斷系統效能的基礎和依據;
  • 其次,Linux維運人員還有掌握系統的硬體信息,例如磁碟I/O、CPU型號、記憶體大小、網卡頻寬等參數信息,然後根據這些資訊綜合評估系統資源的使用情況;
  • 第三,身為Linux維運人員,也要掌握應用程式對系統資源的使用情況,更深入的一點就是要了解應用程式的運作效率,例如是否有程式BUG、記憶體溢位等問題,透過對系統資源的監控,就能發現應用程式是否有異常,如果確實是應用程式有問題,需要把問題立刻反映給程式開發人員,進而改進或升級程式。

效能最佳化本身就是一個複雜且繁瑣的過程,Linux維運人員只有了解了系統硬體資訊、網路資訊、作業系統設定資訊和應用程式資訊才能有針對性地的展開對伺服器效能最佳化,這就要求Linux運維人員有充足的理論知識、豐富的實戰經驗以及縝密分析問題的頭腦。

3.2、系統架構設計人員

系統效能最佳化所涉及的第二類人員就是應用程式的架構設計人員。如果Linux維運人員在經過綜合判斷後,發現影響效能的是應用程式的執行效率,那麼程式架構設計人員就要及時介入,深入了解程式運作狀態。

  • 首先,系統架構設計人員要追蹤了解程式的執行效率,如果執行效率有問題,要找出哪裡出現了問題;
  • # 其次,如果真的是架構設計出現了問題,那麼就要馬上優化或改進系統架構,設計更好的應用系統架構。

3.3、軟體開發人員

系統效能最佳化最後一個環節涉及的是程式開發人員,在Linux維運人員或架構設計人員找到程式或結構瓶頸後,程式開發人員要馬上介入進行對應的程式修改。修改程序要以程式的執行效率為基準,改進程式的邏輯,有針對性地進行程式碼最佳化。例如,Linux維運人員在系統中發現有條SQL語句耗費大量的系統資源,抓取這條執行的SQL語句,發現此SQL語句的執行效率太差,是開發人員編寫的程式碼執行效率低所造成的,這就需要把這個資訊回饋給開發人員,開發人員在收到這個問題後,可以有針對性的進行SQL最佳化,進而實現程式碼的最佳化。

從上面這個過程可以看出,系統效能最佳化一般遵循的流程是:

  1. 首先Linux維運人員查看系統的整體狀況,主要從系統硬體、網路設備、作業系統配置、應用程式架構和程式碼五個面向進行綜合判斷,如果發現是系統硬體、網路設備或作業系統配置問題, Linux維運人員可以根據情況自主解決;
  2. # 如果發現是程式結構問題,就需要提交給程式架構設計人員;
  3. 如果發現是程式碼執行問題,就交給開發人員進行程式碼最佳化。
  4. 這樣就完成了一個系統效能優化的過程。

四、調優總結

#系統效能最佳化是個涉及面廣、繁瑣、長久的工作,尋找出現效能問題的根源往往是最難的部分,一旦找到出現問題的原因,效能問題也就迎刃而解。因此,解決問題的想法變得非常重要。

例如,linux系統下的一個網站系統,使用者反映,網站存取速度很慢,有時無法存取。

針對這個問題:

  1. 第一步要做的是檢測網絡,可以透過ping指令檢查網站的網域解析是否正常,同時,ping伺服器位址的延時是否過大等等,透過這種方式,先排除網路可能出現的問題;如果網路沒有問題
  2. 接著進入第二步,對linux系統的記憶體使用狀況進行檢查,因為網站回應速度慢,一般跟記憶體關聯比較大,透過free、vmstat等指令判斷記憶體資源是否緊缺,如果記憶體資源不存在問題
  3. 進入第三步,檢查系統CPU的負載狀況,可以透過sar、vmstat、top等指令的輸出綜合判斷CPU是否有過載問題,如果CPU沒有問題
  4. 繼續進入第四步,檢查系統的磁碟I/O是否有瓶頸,可以透過iostat、vmstat等指令檢查磁碟的讀寫效能,如果磁碟讀寫也沒有問題,linux系統本身的效能問題基本上排除,最後要做的是檢查程式本身是否有問題。透過這樣的思路,層層檢測,步步排查,性能問題就“無處藏身”,查找出現性能問題的環節也就變得非常簡單。

以上是Linux效能調優~的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

centos和ubuntu的區別 centos和ubuntu的區別 Apr 14, 2025 pm 09:09 PM

CentOS 和 Ubuntu 的關鍵差異在於:起源(CentOS 源自 Red Hat,面向企業;Ubuntu 源自 Debian,面向個人)、包管理(CentOS 使用 yum,注重穩定;Ubuntu 使用 apt,更新頻率高)、支持週期(CentOS 提供 10 年支持,Ubuntu 提供 5 年 LTS 支持)、社區支持(CentOS 側重穩定,Ubuntu 提供廣泛教程和文檔)、用途(CentOS 偏向服務器,Ubuntu 適用於服務器和桌面),其他差異包括安裝精簡度(CentOS 精

centos如何安裝 centos如何安裝 Apr 14, 2025 pm 09:03 PM

CentOS 安裝步驟:下載 ISO 映像並刻錄可引導媒體;啟動並選擇安裝源;選擇語言和鍵盤佈局;配置網絡;分區硬盤;設置系統時鐘;創建 root 用戶;選擇軟件包;開始安裝;安裝完成後重啟並從硬盤啟動。

Centos停止維護後的選擇 Centos停止維護後的選擇 Apr 14, 2025 pm 08:51 PM

CentOS 已停止維護,替代選擇包括:1. Rocky Linux(兼容性最佳);2. AlmaLinux(與 CentOS 兼容);3. Ubuntu Server(需要配置);4. Red Hat Enterprise Linux(商業版,付費許可);5. Oracle Linux(與 CentOS 和 RHEL 兼容)。在遷移時,考慮因素有:兼容性、可用性、支持、成本和社區支持。

docker desktop怎麼用 docker desktop怎麼用 Apr 15, 2025 am 11:45 AM

如何使用 Docker Desktop? Docker Desktop 是一款工具,用於在本地機器上運行 Docker 容器。其使用步驟包括:1. 安裝 Docker Desktop;2. 啟動 Docker Desktop;3. 創建 Docker 鏡像(使用 Dockerfile);4. 構建 Docker 鏡像(使用 docker build);5. 運行 Docker 容器(使用 docker run)。

docker原理詳解 docker原理詳解 Apr 14, 2025 pm 11:57 PM

Docker利用Linux內核特性,提供高效、隔離的應用運行環境。其工作原理如下:1. 鏡像作為只讀模板,包含運行應用所需的一切;2. 聯合文件系統(UnionFS)層疊多個文件系統,只存儲差異部分,節省空間並加快速度;3. 守護進程管理鏡像和容器,客戶端用於交互;4. Namespaces和cgroups實現容器隔離和資源限制;5. 多種網絡模式支持容器互聯。理解這些核心概念,才能更好地利用Docker。

centos停止維護後怎麼辦 centos停止維護後怎麼辦 Apr 14, 2025 pm 08:48 PM

CentOS 停止維護後,用戶可以採取以下措施應對:選擇兼容髮行版:如 AlmaLinux、Rocky Linux、CentOS Stream。遷移到商業發行版:如 Red Hat Enterprise Linux、Oracle Linux。升級到 CentOS 9 Stream:滾動發行版,提供最新技術。選擇其他 Linux 發行版:如 Ubuntu、Debian。評估容器、虛擬機或云平台等其他選項。

docker鏡像失敗怎麼辦 docker鏡像失敗怎麼辦 Apr 15, 2025 am 11:21 AM

Docker鏡像構建失敗的故障排除步驟:檢查Dockerfile語法和依賴項版本。檢查構建上下文中是否包含所需源代碼和依賴項。查看構建日誌以獲取錯誤詳細信息。使用--target選項構建分層階段以識別失敗點。確保使用最新版本的Docker引擎。使用--t [image-name]:debug模式構建鏡像以調試問題。檢查磁盤空間並確保足夠。禁用SELinux以防止干擾構建過程。向社區平台尋求幫助,提供Dockerfile和構建日誌描述以獲得更具體的建議。

怎麼看docker進程 怎麼看docker進程 Apr 15, 2025 am 11:48 AM

Docker 進程查看方法:1. Docker CLI 命令:docker ps;2. Systemd CLI 命令:systemctl status docker;3. Docker Compose CLI 命令:docker-compose ps;4. Process Explorer(Windows);5. /proc 目錄(Linux)。

See all articles