linux服務器性能監控-nmon
Nmon 是一個分析aix和linux性能的免費工具,出自IBM,其采集的數據通過nmon_analyser生成報表
一、下載
二、運行和使用
本文以centos6操作系統為例。
1.啟動nmon
將tar包上傳至linux並解壓,進入解壓文件夾可看到如下內容:
[root@localhost nmon]# ls AgentV200R001Linux64_20100401.tar.gz nmon_x86_fedora10 nmon_x86_rhel45 nmon_x86_sles10 nmon_x86_ubuntu810 MonitorAgent nmon_x86_opensuse10 nmon_x86_rhel52 nmon_x86_sles9
因為一些依賴包的關系,所以在使用nmon的過程中會遇到不同的問題,建議安裝前先執行以下命令:
yum install glibc.i686 ncurses-devel.i686 redhat-lsb -y
接着啟動該工具,在命令行執行
[root@localhost nmon]# ./nmon_x86_rhel52
效果如下
+nmon-12a------[H for help]---Hostname=localhost-----Refresh= 2secs ---08:35.46---------------+ | | | ------------------------------ For help type H or ... | | # # # # #### # # nmon -? - hint | | ## # ## ## # # ## # nmon -h - full | | # # # # ## # # # # # # | | # # # # # # # # # # To start the same way every time | | # ## # # # # # ## set the NMON ksh variable | | # # # # #### # # | | ------------------------------ | | | | Use these keys to toggle statistics on/off: | | c = CPU l = CPU Long-term - = Faster screen updates | | m = Memory j = Filesystems + = Slower screen updates | | d = Disks n = Network V = Virtual Memory | | r = Resource N = NFS v = Verbose hints | | k = kernel t = Top-processes . = only busy disks/procs | | h = more options q = Quit | |--------------------------------------------------------------------------------------------| | |
單個字母表示對應監控點的快捷鍵,只要輸入相應的字母,即可顯示相應的資源耗用情況,輸入c、m、d后顯示效果如下(顯示了cpu、內存、磁盤的使用情況):
+nmon-12a------[H for help]---Hostname=localhost-----Refresh= 2secs ---08:40.30---------------+ | CPU Utilisation ---------------------------------------------------------------------------| | +-------------------------------------------------+ | |CPU User% Sys% Wait% Idle|0 |25 |50 |75 100| | | 1 0.0 0.5 0.0 99.5| > | | | +-------------------------------------------------+ | | Memory Stats ------------------------------------------------------------------------------| | RAM High Low Swap | | Total MB 498.7 0.0 498.7 2016.0 | | Free MB 229.3 0.0 229.3 2016.0 | | Free Percent 46.0% 0.0% 46.0% 100.0% | | MB MB MB | | Cached= 91.3 Active= 137.0 | | Buffers= 12.1 Swapcached= 0.0 Inactive = 82.8 | | Dirty = 0.0 Writeback = 0.0 Mapped = 19.3 | | Slab = 39.8 Commit_AS = 536.2 PageTables= 2.3 | | Disk I/O -----(/proc/diskstats)--------all data is Kbytes per second-----------------------| |DiskName Busy Read WriteKB|0 |25 |50 |75 100| | |sda 0% 0.0 0.0| > | | |sda1 0% 0.0 0.0|> | | |sda2 0% 0.0 0.0| > | | |dm-0 0% 0.0 0.0| > | | |dm-1 0% 0.0 0.0|> | | |--------------------------------------------------------------------------------------------|
具體的參數含義在這里就先不做介紹了,如果不理解,請讀我前一篇文章。
2.如何使用nmon
[root@localhost nmon]# ./nmon_x86_rhel52 -fT -s 5 -c 5 [root@localhost zww]# ll | grep *.nmon -rw-r--r--. 1 root root 16719 11月 9 08:57 localhost_161109_0857.nmon
輸入命令后,將自動在當前目錄生成一個 hostname_timeSeries.nmon 的文件(hostname 為當前見識的服務器的主機名)如: localhost_161109_0857.nmon。
命令的含義是,-f輸出文件,-T輸出最耗自願的進程,-s收集數據的時間間隔,-c收集次數。
- -s 5:每 5 秒進行一次數據采集
- -c 5: 一共采集5次
如果想在后台運行nmon,可使用nohup:
[root@besttest zww]# nohup ./nmon_x86_rhel52 -fT -s 1 -c 10
問題來了,如果我們在做穩定性測試,系統需要持續監控12小時以上,那么我們生成的nmon文件就會非常大,會遠遠超出excel表格所能支撐的數據量,我們該怎么辦?
解決方案是將nmon命令加入系統定時任務,分時段執行,這樣生成的文件就不會太大。一般每小時生成一個nmon文件,1秒采樣一次。
[root@localhost nmon]# vi /etc/crontab
在crontab中添加如下內容:
* */1 * * * ./tmp/nmon/nmon_x86_rhel52 -fT -s 1 -c 3600
/tmp/nmon是我的執行文件所在路徑。
3.關閉nmon
若存在后台運行的nmon進程或未運行結束的nmon進程,可通過ps或top等其它命令將進程ID查出,然后通過kill -9 pid殺掉進程。
三、結果分析
在上面,我們通過配置定時任務生成了.nmon文件,在這里我們介紹如何轉換結果文件以及轉換出來的excel都包含了哪些內容。
1.結果文件轉換
使用官方提供的nmon_analyser進行轉換,下載地址如下:
將文件下載后,點擊帶有analyser的excel,點擊 Analyse nmon data按鈕,選擇.nmon文件打開,即可開始轉換,轉換結束后生成excel文件。
tips:建議使用office excel,因為部分wps版本無法使用該analyser文件。在使用過程中一定要啟用宏才可順利裝載和轉換文件,office要在信任中心啟用宏,而wps下載一個vba模塊安裝后才能啟用宏,具體操作步驟請自行百度。
最終轉換結果(部分)如下圖所示:




2.指標含義
在轉換成功之后,會有很多的表和很多的參數,是不是看到眼花?沒關系,下面給大家貼出來,詳細介紹了包括每個sheet的含義以及sheet中主要指標的含義。
-
nmon分析文件各sheet含義
nmon分析文件各sheet含義 -
nmon分析文件詳細指標詳解
nmon分析文件詳細指標詳解
看到這里,大家也發現了,對於這些表,如果逐個仔細的看是不切實際的,我們應該把握重點,找到關鍵點,順着關鍵點往下看。比如在SYS_SUM中明顯看到CPU高,那么之后我們關注的sheet應該是CPU 以及IO相關的sheet,查看到底是sys占用CPU高還是user占用CPU高,再順着CPU和IO相關的這些表進一步分析,進一步查看對應的表格,以此類推,而不是全都看。
-
nmon關鍵指標列表
nmon關鍵指標列表
3.小結
對於nmon,在掌握了它的結果文件中參數的含義之后,按照文中提供的分析思路,抓住關鍵點一步一步進行分析,進而能夠確定系統層面所表現出來的瓶頸所在。至於更進一步的分析瓶頸出現的原因,那是后面的內容了,nmon的工作到這里就可以結束了。
此外,還有幾點nmon的分析經驗:
- 在觀察曲線變化時
應關注一些有明顯變化(很高或很低)的時間點,系統在做哪些操作,因為這可能是一個隱患,必須了解清楚。 - 關於CPU
多核CPU如果只有一個CPU使用率高,說明程序使用CPU不合理,需要調整。 - 關於磁盤
Disk %Busy 最好不要持續超過20%。 - 關於網絡
首先默認性能測試是內網,其次加上現在的網卡、路由都是千兆萬兆甚至更高級別的設備,默認不關注NET的表格,除非你所做的系統對網絡的要求特別高,否則一般不必關注它。