?????????
系統優化是一項復雜、繁瑣、長期的工作,優化前需要監測、采集、測試、評估,優化后也需要測試、采集、評估、監測,而且是一個長期和持續的過程,不是說現在
優化了,測試了,以后就可以一勞永逸了,也不是說書本上的優化就適合眼下正在運行的系統,不同的系統、不同的硬件、不同的應用優化的重點也不同、優化的方法也不
同、優化的參數也不同。性能監測是系統優化過程中重要的一環,如果沒有監測、不清楚性能瓶頸在哪里,優化什么呢、怎么優化呢?所以找到性能瓶頸是性能監測的目的,
也是系統優化的關鍵。系統由若干子系統構成,通常修改一個子系統有可能影響到另外一個子系統,甚至會導致整個系統不穩定、崩潰。所以說優化、監測、測試通常是連在
一起的,而且是一個循環而且長期的過程,通常監測的子系統有以下這些:這些子系統互相依賴,了解這些子系統的特性,監測這些子系統的性能參數以及及時發現可能會出現的瓶頸對系統優化很有幫助。
應用類型
不同的系統用途也不同,要找到性能瓶頸需要知道系統跑的是什么應用、有些什么特點,比如 web server 對系統的要求肯定和 file server 不一樣,所以分清不同系統的應用類型很重要,通常應用可以分為兩種類型:
- IO 相關,IO 相關的應用通常用來處理大量數據,需要大量內存和存儲,頻繁 IO 操作讀寫數據,而對 CPU 的要求則較少,大部分時候 CPU 都在等待硬盤,比如,數據庫服務器、文件服務器等。
- CPU 相關,CPU 相關的應用需要使用大量 CPU,比如高并發的 web/mail 服務器、圖像/視頻處理、科學計算等都可被視作 CPU 相關的應用。
看看實際中的例子,第1個是文件服務器拷貝一個大文件時表現出來的特征,第2個是 CPU 做大量計算時表現出來的特征:
$ 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。
底線
我們如何知道系統性能是好還是差呢?這需要事先建立一個底線,如果性能監測得到的統計數據跨過這條線,我們就可以說這個系統性能差,如果數據能保持在線內我們就說性能好。建立這樣底線需要知道一些理論、額外的負載測試和系統管理員多年的經驗。如果自己沒有多年的經驗,有一個簡單劃底線的辦法就是:把這個底線建立在自己對系統的期望上。自己期望這個系統有個什么樣的性能,這是一個底線,如果沒有達到這個要求就是性能差。
監測工具
我們只需要簡單的工具就可以對 Linux 的性能進行監測,以下是 VPSee 常用的工具:
工具 | 簡單介紹 |
---|
top | 查看進程活動狀態以及一些系統狀況 |
vmstat | 查看系統狀態、硬件和系統信息等 |
iostat | 查看CPU 負載,硬盤狀況 |
sar | 綜合工具,查看系統狀況 |
mpstat | 查看多處理器狀況 |
netstat | 查看網絡狀況 |
iptraf | 實時網絡狀況監測 |
tcpdump | 抓取網絡數據包,詳細分析 |
mpstat | 查看多處理器狀況 |
tcptrace | 數據包分析工具 |
netperf | 網絡帶寬工具 |
dstat | 綜合工具,綜合了 vmstat, iostat, ifstat, netstat 等多個信息 |
posted on 2010-10-25 09:30
cssseek 閱讀(2415)
評論(0) 編輯 收藏