1.常用linux命令
-
uptime
image.png- 22:22:41 up 3 min 表示服务器运行了3分钟
- 1 user 表示有一个终端接入
- load average :0.01 ,0.03 ,0.01 表示平均负载。三个数字分别表示1分钟,5分钟,15分钟内的平均负载(运行队列中的平均进程数表示)值越大,则负载越重。
-
top
image.png
第一行同uptime命令,还显示了cup信息,内存,交换空间信息。最下面是进程占用情况。 -
vmstat : 可以统计系统cpu,内存,swap,io等情况
image.png- swpd 交换空间情况
- free 空余内存
- bi 输入
- bo 输出
- cs cpu上下文切换
- us 用户占用cpu情况
-
pidstat
image.png
使用: pidstat -p 1231 -u 1 3 表示,查看1231进程cpu使用情况,每秒采样一次,一共采样3次
image.png
使用:pidstat -p 1231 -u 1 3 -t 显示进程中线程信息
使用:pidstat -p 1231 1 3 -d -t 查看进程中磁盘io情况
2.jdk中自带的监控工具
-
jps.exe : 类似于linux中ps -ef | grep java 用来表示所有的java进程
image.png
使用参数:
-q 仅输出VM标识符,不包括class name,jar name,arguments in main method- -m 输出main 方法的参数
- -l 输出完全的包名,应用主类名,jar的完全路径名
- -v 输出jvm参数
- -V 输出通过flag文件传递到JVM中的参数(.hotspotrc文
件或-XX:Flags=所指定的文件
-
jinfo :用来查看正在运行的java应用程序的参数,或者在运行时修改参数
- -flag <name> : 打印指定jvm的参数值
- -flag [+|-]<name> : 指定jvm参数的布尔值
- -flag <name>=<name>:设定指定jvm参数的值
-
使用方式:我们显示新生代对象晋升到老年代对象的最大年龄
-
jinfo -flag MaxTenuringThreshold 10272
image.png
显示新生代的对象经过15次垃圾回收后(如果还存活),进入老年代。
-
jinfo -flag PrintGCDetails 10272
image.png
显示的是-PrintGCDetails 表示当前不输出GC详细日志
现在我们修改下状态
image.png
现在就是打印GC日志详细信息
-
-
jmap :生成java应用程序的堆快照和对象的统计信息
使用:jmap -histo 10272 >d:\s.txt
image.png
这样我们就能看到每个class占用内存情况
除此之外我们还可以使用以下命令dump整个堆信息- jmap -dump:format=b,file=d:\heap.hprof 10272
可以使用MAT工具打开查看hprof文件
- jmap -dump:format=b,file=d:\heap.hprof 10272
-
jstack 用来打印线程信息
- -l打印锁的信息
- -m 打印java和native的帧信息
-
-F强制dump,当jstack没有响应的时候使用
使用:jstack 10272 >>D:\a.txt 输出信息如下
image.png
可以查看线程状态,和执行情况
-
jconsole : 可以查看堆、类、线程、cpu,垃圾回收等状态
image.png -
Visual VM : 是功能强大,多合一故障诊断和性能监控的可视化工具
image.png
网友评论