生产环境服务器变慢,诊断思路和性能评估

生产环境服务器变慢,诊断思路和性能评估

内存溢出OOM可能的原因

  1. 内存中加载大量数据(如一次性数据库读取的数据过多)
  2. 集合类中对对象的引用,JVM无法回收(全局静态MAP)
  3. 死循环产生过多重复对象
  4. 第三方软件bug
  5. 连接数据库,IO流等长时间开启不关闭
  6. 监听器的使用,在释放时没有删除监听器

CPU100%

  1. 由于内存溢出,导致不断GC,GC overhead,导致cpu100%
  2. 死循环,递归调用,如hashmap被多线程并发调用
  3. 某些特定的cpu操作被长时间执行
  4. sql查询过慢等

 问题排查

 

1.top 查看进程的cpu 内存的占用

系统的平均负载,如果撒(1.35+0.81+0.37)/3>0.6 表示系统负载过高

2.uptime (top的精简版)

3.vmstat -n 2 3  没两秒采样一次,共计采样3次,r : 3+1+2 超过了2*3

查看所有cpu core 信息 mpstat -P ALL 2 每2秒采样一次

内存:free -m 

pid -p 进程号 -r 采样间隔秒

磁盘 :df 查看磁盘剩余空间

磁盘IO iostat-xdk 2 3

网络IO ifstat

cpu占用过高定位

top 命令查出java cpu过高的进程号
ps -ef|grep java|grep -v grep
ps -mp 进程号 -o THREAD,tid,time

将线程Id 转为16进制的tid

jstack pid |grep tid -A60  打印前60行
jstack pid > /tmp/log.txt 输出到文件查看

 

增加 -XX:+HeapDumpOnOutofMemoryError参数

-XX:+HeapDumpPath ,OOM时会在/opt/soft/heap/heapdump/ 下申城java_pid$pid.hprof 二进制文件

#用法: jmap ‐dump:format=b,file=dumpFileName名字 <pid进程号> #示例 jmap ‐dump:format=b,file=/opt/soft/heap/heapdump/dump.dat 11927

使用工具分析此文件

性能监测工具使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值