常用的監控和內存診斷工具


原創轉載請注明出處:https://www.cnblogs.com/agilestyle/p/11462230.html

 

Linux命令行工具之top命令

top命令是在Linux下最常用的命令之一,它可以實時顯示正在執行進程的CPU使用率、內存使用率以及系統負載等信息。其中上半部分顯示的是系統的統計信息,下半部分顯示的是進程的使用率統計信息。

除了簡單的top之外,還可以通過top -Hp pid查看具體線程使用系統資源情況

 

Linux命令行工具之vmstat命令

vmstat是一款指定采樣周期和次數的功能性監測工具,它不僅可以統計內存的使用情況,還可以觀測到CPU的使用率、swap的使用情況。但vmstat一般很少用來查看內存的使用情況,而是經常被用來觀察進程的上下文切換。

 

Linux命令行工具之pidstat命令

之前的top和vmstat兩個命令都是監測進程的內存、CPU以及I/O使用情況,而pidstat命令則是深入到線程級別。

 

JDK工具之jstat命令

jstat可以監測Java應用程序的實時運行情況,包括堆內存信息以及垃圾回收信息。

1 sudo -u haha jstat -gcutil 41565 2000

 

JDK工具之jstack命令

這個工具是一種線程堆棧分析工具,最常用的功能就是使用 jstack pid 命令查看線程的堆棧信息,通常會結合top -Hp pid 或 pidstat -p pid -t一起查看具體線程的狀態,也經常用來排查一些死鎖的異常。每個線程堆棧的信息中,都可以查看到線程ID、線程的狀態(wait、sleep、running 等狀態)以及是否持有鎖等。

1 ps -ef | grep app
2 
3 top -H -p 41565
4 
5 printf "%x\n" 41575
6 
7 sudo -u haha jstack 41565 > ~/jstack_0403.txt

 

JDK工具之jmap命令

使用jmap查看堆內存初始化配置信息以及堆內存的使用情況。那么除了這個功能,其實還可以使用jmap輸出堆內存中的對象信息,包括產生了哪些對象,對象數量多少等。

可以用jmap來查看堆內存初始化配置信息以及堆內存的使用情況

可以使用jmap -histo[:live] pid查看堆內存中的對象數目、大小統計直方圖,如果帶上live則只統計活對象

1 sudo -u haha jmap -histo:live 41565 > ~/jmap.txt

 

Reference

https://time.geekbang.org/column/article/108582

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM