linux性能優化與內核參數優化


1.性能問題理論綜述

  系統的性能是指操作系統完成任務的有效性、穩定性和響應速度

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

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

2.系統硬件資源

  2.1 cpu

  cpu是操作系統穩定運行的根本,cpu的速度與性能在很大程度上決定了系統整體的性能,因此理論上cpu數量越多、主頻越高,服務器的性能也就相對越好。但是事實並非如此。

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

  可能出現cpu瓶頸的應用有db服務器、動態web服務器等,對於這類應用,要把cpu的配置和性能放在主要位置

  2.2 內存

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

  猶豫處理器尋址范圍的限制,在32位Linux操作系統上,應用程序單個進程最大只能使用4GB的內存,這樣一來,即使系統有更大的內存,應用程序也無法‘享’用。解決辦法就是使用64位處理器,安裝64位操作系統。在64位操作系統下,可以滿足所有程序對內存使用的需求,幾乎沒有限制。

  可能出現內存性能瓶頸的應用有NOSQL(非關系型的數據庫)服務器,數據庫服務器、緩存服務器等,對於這類應用要把內存大小放在主要位置

  2.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,這里進行簡單的介紹。

  RAID0:通過把多塊硬盤粘合成一個容量更大的硬盤組,提高磁盤的性能和吞吐量。這種方式成本低,要求至少兩個硬盤,但是沒用容錯和數據修復功能,因此只能用在對數據安全性要求不高的環境中。

  RAID1:也就是磁盤鏡像,通過把一個磁盤的數據鏡像到另一個磁盤上,最大限度地保證磁盤數據的可靠性和可修復性,具有很高的數據冗余能力,但磁盤的利用率只有50%,因而,成本最高,多用在保存重要數據的場合。

  RAID5:才用了磁盤分段加奇偶校驗技術,從而提高了系統可靠性,讀出效率很高,寫入效率一般,至少需要3塊盤。允許一塊磁盤故障,而不影響數據的可用性。

  RAID0+1:把RAID0和RAID1技術結合起來就是RAID0+1,至少需要4塊盤。此種方式的數據除分布在多個盤上外,每個盤都有其鏡像盤,提供全冗能力,同時允許一個磁盤故障,而不影響數據可用性,並具有快速讀/寫能力。

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

  2.4網絡帶寬

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

3.操作系統相關資源

  基於操作系統的性能優化也是多方面的,可以從系統安裝、系統內核參數、網絡參數、文件系統等幾個方面進行衡量,下面依次進行簡單介紹。

  3.1系統安裝優化

  系統優化可以從安裝操作系統開始,當安裝linux系統時,磁盤的划分,SWAP內存的分配都直接影響以后系統的運行性能。例如,磁盤分配可以遵循應用的需求:對於寫操作頻繁而對數據安全性要求不高的應用,可以把磁盤做成RAID0;而對於對數據安全性較高,對讀寫沒有特別要求的應用,可以把磁盤做成RAID1;對於對讀操作要求較高,而對寫操作無特殊要求,並保證數據數據安全性的應用,可以選擇RAID5;對於讀寫要求都很高,並且對數據安全性要求也很高的應用,可以選擇RAID10/RAID0+1。這樣通過不同的應用需求設置不同的RAID級別,在磁盤底層對系統進行優化操作。

  隨着內存價格的降低和內存容量的日益增大,對虛擬內存SWAP的設定,現在已經沒有了所謂虛擬內存是物理內存兩倍的需求,但是SWAP的設定還是不能忽略,根據經驗,如果內存較小(物理內存小於4GB),一般設置SWAP交換分區大小為內存的2倍;如果內存大於8GB小於16GB們可以設置SWAP大小等於或略小於物理內存即可;如果內存大小在16GB以上,原則上可以設置SWAP為0,但並不建議這么做,因為設置一定大小的SWAP還是有一定作用的

  在我們大數據環境中,一般搭建大數據集群式都會禁用swap分區

  3.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.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是主流文件系統,如何選擇合適的文件系統,需要根據文件系統的特點加上業務需求綜合來定。

 

返回目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM