常用的监控和内存诊断工具

原创转载请注明出处: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
" 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

原文地址:https://www.cnblogs.com/agilestyle/p/11462230.html