java性能问题排查思路分享(性能优化)

java性能问题排查思路分享

两个关键指标

  1. 吞吐量: 单位时间内处理的事务(TPS)
  2. 时延:请求到响应花费的时间
    在这里插入图片描述

软件性能模型

  • 横坐标:用户量
  • 绿线:资源利用率
  • 紫线: 吞吐量(TPS)
  • 红线:延时

做压力测试找到合适的位置

在这里插入图片描述

定位思路

  1. 系统层面
  2. 应用层面

在这里插入图片描述

排查问题流程
cpu -> 内存 -> 磁盘 -> 网络 -> 程序

在这里插入图片描述

CPU问题排查

CPU负载: 正常值在CPU核心数的0.7左右

load average :  1分钟  5分钟  15分钟

CPU用户态,内核态占比:

Cpu(s): 用户态 us 内核态 sy

在这里插入图片描述

按 1 可以展示所有CPU的运行情况

重点关注 CPU0:  内核调度,线程切换主要由CPU0操作

在这里插入图片描述

按 shift+c 对CPU使用率从高到低排序

找到CPU占比高的几个进程,进行排查

在这里插入图片描述

内存

free命令

buff/cache : CPU在读的时候会把一些数据先放到cache里去
数据在内存和磁盘转换,为了提高效率

在这里插入图片描述

磁盘:
df: 查看磁盘容量
du: 查看大文件

在这里插入图片描述

iostat:

r/s  w/s  : 每秒读写的次数
rKB/s wKB/s : 每秒读写数据块的大小
awati: 读写等待时间
svctm: 服务时间  (svctm >> awati 说明磁盘达到了瓶颈)
agvqu-sz : 读写队列大小
	

在这里插入图片描述

iotop:

查看占用磁盘io最大的几个进程

在这里插入图片描述

网络:

在这里插入图片描述

业务进程问题排查

在这里插入图片描述

线程:

在这里插入图片描述

java自带工具:

注意: jmap -dump 会stop the world ,不要在生产环境使用,会影响使用

在这里插入图片描述

在这里插入图片描述

常用工具

arthas: 阿里开源java诊断工具

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

MAT: 内存分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ibm jca (线程分析工具)

在这里插入图片描述

实战案例1: 连接池被占满,调大连接数,过了一会仍被占满

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

实战案例2: 微服务不能平行扩展, tps上不去

在这里插入图片描述

实战案例3: 备机房的tps不稳定

在这里插入图片描述

实战案例4: 系统tps不稳定

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值