1 內存:
free 命令查看
2 CPU
- 查看負載 ,通過top 或者uptime 來查看。對於平均負載來說,理想值是爲CPU核數。
uptime 結果
17:25:14 up 320 days, 3:15, 2 users, load average: 0.11, 0.24, 0.28
當前時間 當前運行時間 有幾個用戶登錄 負載 1分鐘負載 5分鐘負載 15 分鐘過負載
平均負載含義:是指單位時間內,系統處於可運行狀態和不可中斷狀態的平均進程數,也就是平均活躍進程數
當負荷達到5.0,就表明你的系統有很嚴重的問題,平均負載並不等於CPU使用率。平均負載升高有以下幾種可能:
1 平均負載高有可能是 CPU 密集型進程導致的;
2 平均負載高並不一定代表 CPU 使用率高,還有可能是 I/O 更繁忙了;
3 當發現負載高的時候,你可以使用 mpstat、pidstat,iostat 等工具,輔助分析負載的來源
-
查看CPU信息
-
通過查看/proc/cpuinfo 可以查看CPU信息
-
cat /proc/cpuinfo | grep 'model name' | wc -l 可以查看CPU核數
-
3 磁盤
top中 %CPU列,有一個wa指標,表示等待io操作佔整體的CPU百分比,比列越高,說明CPU等待io的時間越多,說明需要進行io 優化
df
df命令用於顯示磁盤分區上的可使用的磁盤空間。默認顯示單位爲KB。可以利用該命令來獲取硬盤被佔用了多少空間,目前還剩下多少空間等信息。
du
常用 : du -sh ./* 顯示當前文件夾下所有目錄信息
可以查看某個文件或某個目錄的所佔空間
-h 以人類的方式顯示
-s 顯示總計,不顯示文件大小
--max-depth=1 查看當前目錄下一級子文件和子目錄佔用的磁盤容量,如果不加這個選項的話,會遞歸的吧所有目錄都列出來,很噁心
iostat (只能看到全局)
tps 磁盤當前每秒隨機讀寫的操作,後面的是當前磁盤每秒的寫入大小與讀大小
iotop
可以查看每個進程對應的io 情況
stress 可以模擬想磁盤插入數據,來進行檢測
4 虛擬內存
vmstat 是虛擬內存統計,可對操作系統的虛擬內存、進程、IO讀寫、CPU活動等進行監視。它是對系統的整體情況進行統計,不足之處是無法對某個進程進行深入分析
vm delay count delay 表示間隔時間,count表示顯示次數,如果都不加的話,只顯示一條
pidstat 用於監控全部或指定進程的cpu、內存、線程、設備IO等系統資源的佔用情況.
沒有任何參數顯示所有的。
-w 顯示進程上下文切換信息
-p 顯示指定的進程id
-u:默認的參數,顯示各個進程的cpu使用統計
-r:顯示各個進程的內存使用統計
-d:顯示各個進程的IO使用情況
5 查看進程以及線程情況
1 ps :
ps aux 可以查看所有運行的進程
-mp pid -o THREAD,tid,time 可以查看pid對應的所有線程,以及每個線程的具體情況
-T -p pid 列出進程所有的線程,相當於上述的簡化版,只有tid,沒有其他的
2 top (推薦使用,比較簡單)
top -H -p pid ,可以動態的查看, 結果的pid 即線程id
3 /proc/pid/status
可以查看進程詳細信息
6 java
1 jstack pid
堆棧跟蹤工具,用於生成當前時刻的線程快照。可以定位線程出現的問題。
可以查看當前堆棧信息,可以查看線程使用情況。 可以使用 grep grep tid -A30 來獲取指定的信息,這裏的tid需要轉化爲16進制。可以使用 printf '%0x' 123 來獲取 。 也可以通過Thread.getAllStackTraces方法 來獲取,把信息做成一個html頁面,就可以動態顯示。
2 jmap pid
內存映像工具,可以用於生產對轉存快照。
命令jmap是一個多功能的命令。它可以生成 java 程序的 dump 文件, 也可以查看堆內對象示例的統計信息、查看 ClassLoader 的信息以及 finalizer 隊列。
heap: 顯示Java堆詳細信息 jmap -heap pid
histo[:live]: 顯示堆中對象的統計信息 jmap -histo:live ,如果指定了live選項,那麼只會計算活動的對象
clstats:打印類加載器信息 , jmap -clstats pid
finalizerinfo: 顯示在F-Queue隊列等待Finalizer線程執行finalizer方法的對象
dump:<dump-options>:生成堆轉儲快照,並輸出到文件, jmap –dump:file=xxx pid
F: 當-dump沒有響應時,使用-dump或者-histo參數. 在這個模式下,live子參數無效.
help:打印幫助信息
J<flag>:指定傳遞給運行jmap的JVM的參數
3 jps
顯示當前運行到虛擬機上的所有java程序,類似於linux的ps
默認顯示pid 和啓動類
-m 可以顯示具體信息,包括啓動時候的參數
4 jstat
jstat -gcutil 16511 1000 10 在1000毫秒內 顯示 10次 16511進程 gc信息
虛擬機統計信息監視工具。
gcutil 結果分析
S0: Survivor space 0 utilization as a percentage of the space's current capacity. Survivor0 使用了該總空間的百分比
S1: Survivor space 1 utilization as a percentage of the space's current capacity. Survivo 1
E: Eden space utilization as a percentage of the space's current capacity. 新生代
O: Old space utilization as a percentage of the space's current capacity. 老年代
M: Metaspace utilization as a percentage of the space's current capacity. 元空間/永久代,Java1.8 可能爲P
CCS: Compressed class space utilization as a percentage. 壓縮類空間利用率爲百分比。
YGC: Number of young generation GC events. 新生代從啓動爲止的GC次數
YGCT: Young generation garbage collection time. 新生代垃圾收集總時間,單位爲s
FGC: Number of full GC events. FullGC次數。
FGCT: Full garbage collection time. FullGC總時間
GCT: Total garbage collection time. 垃圾回收總時間。
5 jinfo
java信息配置工具,可以實時查看和調整虛擬機的各項參數。
no option 輸出全部的參數和系統屬性
-flag name 輸出對應名稱的參數
-flag [+|-]name 開啓或者關閉對應名稱的參數
-flag name=value 設定對應名稱的參數
-flags 輸出全部的參數
-sysprops 輸出系統屬性
6 jvisualvm :
可視化查看java進程信息。
分析dump文件: https://blog.csdn.net/lkforce/article/details/60878295
遠程連接: https://www.cnblogs.com/gossip/p/6141941.html
6 分析 Java :
https://mp.weixin.qq.com/s/g8KJhOtiBHWb6wNFrCcLVg