系统信息
- /proc虚拟目录,是内存的映射
- cat /proc/version
- cat /proc/cpuinfo
- cat /proc/meminfo free -m
- df -h
CPU占用高
-
top 找到异常java进程的pid
-
top -Hp pid --- 查看进程中CPU或着MEM占用较高的线程
-
printf "%x\n" 42746 ---线程转成十六进制
-
jstack 25720 | less --- 进程的堆栈信息,找线程(十六进制)
-
jmap -histo 25720 | head -n 100 查看实例最多的可疑对象
内存占用高
- jmap -heap 21957 -- 打印heap的概要信息,GC使用的算法,heap的配置及使用情况,可以用此来判断内存目前的使用情况以及垃圾回收情况
- jmap -histo 21957 | head -n 100 -- 打印堆的对象统计,包括对象数、内存大小等等
- jmap -histo:live 21957 | head -n 100 -- 会触发一次FGC后,收集统计信息
检查项
-
gc:
jstat -gcutil 25720 1000 -- gc情况 -
io:
iostat -d -x -k 1 10 -
与数据库连接:
pid: netstat -anp | grep 21643
port: netstat -anp | grep 3306
响应慢
线上问题
- CPU占用过高
耗cpu的代码
线程空转 - MEM占用过高
- java进程挂掉了
- 数据库CPU告警
没有索引惹的祸
线上操作使用命令要小心
- jmap,jstack等
-
vi 大文件
vi 1个多G的日志文件,刚打开时
image.png
网友评论