針對性能測試過程中常用的一些監控命令及工具進行梳理。
一、服務器監控
服務器級別監控主要看以下方面
一般使用監控方式如下:
top命令:
查看當前系統CPU的使用情況
輸入1可以查看全部CPU的情況
free -m命令:
查看當前系統內存的使用情況(以MB為統計單位)
輸出結果:
buffer和cache: 都是Linux下的緩存機制,其中buffer為寫操作的緩存,cache為讀操作的緩存。
swap: 交換空間,磁盤上的一塊空間,當系統內存不足時,會使用交換空間
df -h命令:
查看當前系統磁盤空間的使用情況
iostat命令:
iostat -x -k 1
-x:展示磁盤的擴展信息 -k:以k為單位展示磁盤數據 1:每1秒刷新一次
主要關注指標 util:磁盤IO使用率,單位%,反映磁盤的繁忙程度,上限100%
vmstat命令:
綜合顯示了CPU、進程、內存、磁盤IO等信息
vmstat 1 # 1 刷新頻率
dstat命令:
是較全能的全能監控工具,支持實時刷新。
需要先安裝才可以使用:yum install dstat
dstat -tcmnd --disk-util
nmon:
可以使用對應的EXCEL生成一些服務器相關指標的圖形,針對穩定性場景比較合適,同時里面的圖表可以用作測試報告,非常使用,之前寫過這方面的介紹,有興趣可以點擊看看【nmon介紹及使用】
二、應用級別監控
java程序監控
1) 命令行監控:
監控jvm的GC情況 : jstat -gcutil pid 1000 100
替換PID為指定的進程號,1000代表刷新頻率 100代表輸出100次
查看jvm配置信息: jmap -heap pid:
可以看到java進程的堆的配置信息,各區的空間大小和配置信息
查看jvm中類和對象的占用情況: jmap -histo 5279 | head -20
查看jvm中各個類的實例數、占用內存數量以及類的全名
堆文件dump: jmap -dump:format=b,file=m.hdump 19300
對堆內存進行dump,以文件的形式進行保存下來,可以用jvisualvm等工具對文件進行分析
通過裝入本地的工具,可以查看詳細情況
2) 工具類監控:
jvisualvm
JDK提供的一個JVM運行監控工具,可用於查看dum文件,CPU及內存的占用情況,GC垃圾回收情況等信息。
監控之前先對jvm加監控參數,在tomcat的bin目錄下,catalina.sh文件中,第二行 添加
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=10086 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.0.10"
注意這里是一行,hostname需修改成服務器的地址,端口用一個沒用過的即可。
重啟之后就可以使用在控制台輸入 jvisualvm 打開界面監控相關程序。
Arthas(阿爾薩斯)
阿里巴巴開源的Java診斷工具,深受開發者喜愛。
下載: curl -O https://alibaba.github.io/arthas/arthas-boot.jar
啟動:java -jar arthas-boot.jar 進入到arthas交互環境
輸入命令:
help:會出現所有arthas支持的命令
thread:列出線程的信息,按照cpu占用率從高到低列出來,如果線程太多,可以通過-n參數指定輸出的行數。
thread -b:可以查看block的線程
dashboard :可以實時查看內存的情況,定位內存溢出問題。