JVM性能问题排查

# 若top命令中发现有僵尸进程,可以通过如下命令找出僵尸进程的pid,找到之后直接用kill 9杀掉(先杀子进程、不行就杀父进程)
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'

# -A 选项列出所有进程
# -o 选项自定义输出字段:stat(状态)、ppid(父进程id)、pid(进程id)、cmd(命令)
# 因为在Linux中,状态为z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程
# jstat -gcutil [监控进程id] [采样周期ms] [采样次数]
jstat -gcutil 87805 1000 5
S0: 新生代中Survivor space 0区已使用空间的百分比
S1: 新生代中Survivor space 1区已使用空间的百分比
E: 新生代已使用空间的百分比
O: 老年代已使用空间的百分比
P: 永久带已使用空间的百分比

YGC: 从应用程序启动到当前,发生Yang GC 的次数
YGCT: 从应用程序启动到当前,Yang GC所用的时间【单位秒】
FGC: 从应用程序启动到当前,发生Full GC的次数
FGCT: 从应用程序启动到当前,Full GC所用的时间
GCT: 从应用程序启动到当前,用于垃圾回收的总时间【单位秒】
top

# 如果是cpu负载高,但使用率低,可以使用这个命令,找出stat为【D+】的睡眠进程,重启
ps -axjf

# 查看整机磁盘使用情况
df -h

# 查看当前目录磁盘使用情况
du -sh *

# 将内存快照导出为文件,再用vitueralVM打开查看
jmap -dump:file=test.hprof,format=b 12946
posted @ 2022-11-04 10:16  JaxYoun  阅读(24)  评论(0编辑  收藏  举报