Linux性能調優用這個「必殺技」,穩了!

「這個系統好慢、網站又打不開了,太卡了,又沒響應了!」相信大家都遇到過這種抱怨,這是應用系統出現了性能問題,需要性能調優。

性能調優,要求對計算機硬體、操作系統和應用有相當深入的了解。

調節三者之間的關係,實現整個系統(硬體、操作系統、應用)的性能最優化,不斷滿足現有的業務需求。

為什麼性能調優?

說到底就倆原因:

獲得更好的系統性能

滿足不斷增加的業務需求

通過性能調優,可以用更少的硬體資源,支撐更大量的業務發展,從而達到節省硬體投資的目的。

同時,可以在資源有限,不能擴容的情況下,提升系統的響應能力,從而為用戶帶來更好的使用體驗。

性能調優三大系統

我們重點說一下在進行性能優化時,硬體、操作系統、應用程序這三大系統,需要關注的一些細節和具體的優化思路:

硬體優化。主要是對硬體選型,例如 CPU、內存、磁碟、網卡等。

操作系統優化。主要包含了操作系統的系統參數、內核參數、進程參數、文件系統、磁碟 IO 等。

應用程序優化。主要包含對應用軟體優化,例如:Apache、Nginx、Redis、MySQL、Keepalived、Kafka 等。

下面展開介紹這三大系統優化。

硬體優化

在上線一個業務系統之前,首先需要進行硬體採購。硬體採購的標準是業務系統的運行特點和對資源的佔用情況。

舉例一:如果我們要上線一套 Redis 集群

Redis 是內存資料庫,特點是佔用內存會非常大。採購的時候要重點考慮的硬體資源就是內存,第一內存要大,第二內存資源要可擴展。

Redis 對磁碟讀、寫並不會很頻繁,同時,佔用的磁碟空間也不會太大。對磁碟的採購,可以不需要太大的磁碟空間,普通的 SAS 磁碟即可。

舉例二:如果我們要上線的是一套資料庫系統

資料庫系統的特點是比較耗費 CPU,也比較耗費內存,對數據安全性要求很高。

無論你使用的是 MySQL、SQL Server 還是 Oralce,都需要配置足夠快的 CPU,足夠大的內存,足夠穩定可靠的硬碟,同時硬碟需要做 RAID,RAID10 最好。

操作系統優化

操作系統介於硬體和應用之間,起到一個承上啟下的作用。

相關的系統參數設置關係到內存、IO 的調用機制、文件系統的使用效率、進程調度的優先順序。

下圖展示了 Linux 的內部結構以及與硬體的協助機制,非常重要。

最底層,是硬體設備(Hardware);往上是固化到硬體中的程序(Firmware);接著是設備驅動程序(Driver),是一種特定形式的軟體程序,實現與硬體設備的交互。

操作系統層面的組成部分,首先是系統內核(Kernel),在內核基礎之上是系統庫、共享庫等系統運行必須的庫文件(Libraries)。

最上層是系統中運行的應用程序(Applications),就是我們在系統中安裝的各種應用軟體,例如 MySQL、Samba、FTP 等。

由此可知,操作系統優化是一個從底層硬體到上層軟體應用,逐級優化的過程。

應用程序優化

最直觀的表現是從日誌中發現異常,然後根據日誌中的異樣進行綜合判斷得出優化結論。

最容易忽略的是代碼優化,有些性能問題完全是代碼不合理。比如,for 循環次數過多、作了很多無謂的條件判斷、相同邏輯重複多次等。

在排除代碼層面的問題後,就需要考慮架構層面、參數配置層面等方面的問題。

架構層面的調優包括讀寫分離、多從庫負載均衡、水平和垂直分庫分表,還需要的調優手段有連接池調優、資料庫參數調優等。

最後,通過一個對 MySQL 資料庫進行調優,簡單總結一下需要關注的方面有哪些:

MySQL 安裝編譯優化

MySQL 配置文件優化

MySQL 存儲引擎優化

優化表類型(MyISAM 或 InnoDB)

查詢緩存優化

SQL 語句優化

鎖機制優化

MySQL 伺服器優化(操作系統參數、存儲盤換 SSD 等)

看到了吧,性能調優真是一個大話題,隨便一個方面,都有很多要優化的內容。

推薦閱讀:

TAG:Linux | Linux開發 | Linux運維 |