查看系统版本
• cat /etc/os-release
• cat /etc/redhat-release
• rpm -q centos-release
系统信息
• /proc虚拟目录,是内存的映射
• 内核版本 cat /proc/version | uname -a
• cat /proc/cpuinfo 线上是4CPU 8Core
• cat /proc/meminfo free -m 线上是8G
• df -h 线上是40G
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