Linux性能監(jiān)測:監(jiān)測目的與工具介紹
系統(tǒng)優(yōu)化是一項復(fù)雜、繁瑣、長期的工作,優(yōu)化前需要監(jiān)測、采集、測試、評估,優(yōu)化后也需要測試、采集、評估、監(jiān)測,而且是一個長期和持續(xù)的過程,不是說現(xiàn)在優(yōu)化了,測試了,以后就可以一勞永逸了,也不是說書本上的優(yōu)化就適合眼下正在運(yùn)行的系統(tǒng),不同的系統(tǒng)、不同的硬件、不同的應(yīng)用優(yōu)化的重點也不同、優(yōu)化的方法也不同、優(yōu)化的參數(shù)也不同。性能監(jiān)測是系統(tǒng)優(yōu)化過程中重要的一環(huán),如果沒有監(jiān)測、不清楚性能瓶頸在哪里,優(yōu)化什么呢、怎么優(yōu)化呢?所以找到性能瓶頸是性能監(jiān)測的目的,也是系統(tǒng)優(yōu)化的關(guān)鍵。系統(tǒng)由若干子系統(tǒng)構(gòu)成,通常修改一個子系統(tǒng)有可能影響到另外一個子系統(tǒng),甚至?xí)?dǎo)致整個系統(tǒng)不穩(wěn)定、崩潰。所以說優(yōu)化、監(jiān)測、測試通常是連在一起的,而且是一個循環(huán)而且長期的過程,通常監(jiān)測的子系統(tǒng)有以下這些:
- CPU
- Memory
- IO
- Network
這些子系統(tǒng)互相依賴,了解這些子系統(tǒng)的特性,監(jiān)測這些子系統(tǒng)的性能參數(shù)以及及時發(fā)現(xiàn)可能會出現(xiàn)的瓶頸對系統(tǒng)優(yōu)化很有幫助。
應(yīng)用類型
不同的系統(tǒng)用途也不同,要找到性能瓶頸需要知道系統(tǒng)跑的是什么應(yīng)用、有些什么特點,比如 web server 對系統(tǒng)的要求肯定和 file server 不一樣,所以分清不同系統(tǒng)的應(yīng)用類型很重要,通常應(yīng)用可以分為兩種類型:
- IO 相關(guān),IO 相關(guān)的應(yīng)用通常用來處理大量數(shù)據(jù),需要大量內(nèi)存和存儲,頻繁 IO 操作讀寫數(shù)據(jù),而對 CPU 的要求則較少,大部分時候 CPU 都在等待硬盤,比如,數(shù)據(jù)庫服務(wù)器、文件服務(wù)器等。
- CPU 相關(guān),CPU 相關(guān)的應(yīng)用需要使用大量 CPU,比如高并發(fā)的 web/mail 服務(wù)器、圖像/視頻處理、科學(xué)計算等都可被視作 CPU 相關(guān)的應(yīng)用。
看看實際中的例子,第1個是文件服務(wù)器拷貝一個大文件時表現(xiàn)出來的特征,第2個是 CPU 做大量計算時表現(xiàn)出來的特征:
$ vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 4 140 1962724 335516 4852308 0 0 388 65024 1442 563 0 2 47 52 0 0 4 140 1961816 335516 4853868 0 0 768 65536 1434 522 0 1 50 48 0 0 4 140 1960788 335516 4855300 0 0 768 48640 1412 573 0 1 50 49 0 0 4 140 1958528 335516 4857280 0 0 1024 65536 1415 521 0 1 41 57 0 0 5 140 1957488 335516 4858884 0 0 768 81412 1504 609 0 2 50 49 0
$ vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 4 0 140 3625096 334256 3266584 0 0 0 16 1054 470 100 0 0 0 0 4 0 140 3625220 334264 3266576 0 0 0 12 1037 448 100 0 0 0 0 4 0 140 3624468 334264 3266580 0 0 0 148 1160 632 100 0 0 0 0 4 0 140 3624468 334264 3266580 0 0 0 0 1078 527 100 0 0 0 0 4 0 140 3624712 334264 3266580 0 0 0 80 1053 501 100 0 0 0 0
上面兩個例子最明顯的差別就是 id 一欄,代表 CPU 的空閑率,拷貝文件時候 id 維持在 50% 左右,CPU 大量計算的時候 id 基本為 0。
底線
我們?nèi)绾沃老到y(tǒng)性能是好還是差呢?這需要事先建立一個底線,如果性能監(jiān)測得到的統(tǒng)計數(shù)據(jù)跨過這條線,我們就可以說這個系統(tǒng)性能差,如果數(shù)據(jù)能保持在線內(nèi)我們就說性能好。建立這樣底線需要知道一些理論、額外的負(fù)載測試和系統(tǒng)管理員多年的經(jīng)驗。如果自己沒有多年的經(jīng)驗,有一個簡單劃底線的辦法就是:把這個底線建立在自己對系統(tǒng)的期望上。自己期望這個系統(tǒng)有個什么樣的性能,這是一個底線,如果沒有達(dá)到這個要求就是性能差。比如,VPSee 上個月有個 RAID0 的測試,期望的測試結(jié)果應(yīng)該是 RAID0 的 IO 性能比單硬盤有顯著提高,底線是 RAID0 的 IO 至少要比單硬盤要好(好多少不重要,底線是至少要好),測試結(jié)果卻發(fā)現(xiàn) RAID0 性能還不如單硬盤,說明性能差,這個時候需要問個為什么,這往往是性能瓶頸所在,經(jīng)過排查發(fā)現(xiàn)是原硬盤有硬件瑕疵造成性能測試結(jié)果錯誤。
監(jiān)測工具
我們只需要簡單的工具就可以對 Linux 的性能進(jìn)行監(jiān)測,以下是 VPSee 常用的工具:
工具 | 簡單介紹 |
---|---|
top | 查看進(jìn)程活動狀態(tài)以及一些系統(tǒng)狀況 |
vmstat | 查看系統(tǒng)狀態(tài)、硬件和系統(tǒng)信息等 |
iostat | 查看CPU 負(fù)載,硬盤狀況 |
sar | 綜合工具,查看系統(tǒng)狀況 |
mpstat | 查看多處理器狀況 |
netstat | 查看網(wǎng)絡(luò)狀況 |
iptraf | 實時網(wǎng)絡(luò)狀況監(jiān)測 |
tcpdump | 抓取網(wǎng)絡(luò)數(shù)據(jù)包,詳細(xì)分析 |
mpstat | 查看多處理器狀況 |
tcptrace | 數(shù)據(jù)包分析工具 |
netperf | 網(wǎng)絡(luò)帶寬工具 |
dstat | 綜合工具,綜合了 vmstat, iostat, ifstat, netstat 等多個信息 |
本系列將按照CPU、內(nèi)存、磁盤IO、網(wǎng)絡(luò)這幾個方面分別介紹。
原文:http://www.vpsee.com/2009/11/linux-system-performance-monitoring-introduction/
系列導(dǎo)航:
- Linux性能監(jiān)測:監(jiān)測目的與工具介紹
- Linux性能監(jiān)測:CPU篇
- Linux性能監(jiān)測:內(nèi)存篇
- Linux性能監(jiān)測:磁盤IO篇
- Linux性能監(jiān)測:網(wǎng)絡(luò)篇
【編輯推薦】