「第 33 讲」后台服务出现明显变慢,谈谈你的诊断思路|学习笔记

这是我学习极客时间 app 中《Java核心技术36讲》课程的第 33 篇学习笔记,坚持写完 36 讲学习笔记。

一、后台服务出现明显变慢,谈谈你的诊断思路

在正面回答之前,先探讨更加精确的问题定义是什么?

1、“变慢”是指响应时间变长么?
2、变慢是突然出现的?还是周期性出现?
3、是所有接口都变慢了么?

只有弄清楚问题的定义,我们才能避免答非所问。

思路:
1、确定是否是应用内部
通过日志确认,是自己的应用慢还是因为调用其他系统慢。
2、是否出现程序错误
检查应用日志,是否出现异常。
3、检查系统级别资源
检查系统 CPU、内存等资源是否被其他进程大量占用,并且这种占用是不合理的。
4、检查 GC
是否有 Full GC 等恶劣情况出现,或者 Minor GC 在变长。
5、对应用进行 profiling
对系统产生侵入性,大多数情况不建议在生产系统进行。

二、系统性能分析

系统分析中,CPU、内存和 IO 是主要关注项,对应命令。

  • top
  • free
  • iostat

三、JVM 分析

  • 利用(Java Mission Control)JMC、JConsole 等工具进行运行时监控
  • 堆转存分析
  • GC 日志
  • Profiling
    使用 JFR 配合 JMC 来做 profiling。其性能开销低于 2 %。
    它的使用非常方便,不需要重启应用,或者提前配置。你可以在运行时启动 JFR 记录,并将这段时间的信息写入文件。
jcmd <pid> VM.unlock_commercial_features
Jcmd <pid> JFR.start duration=120s filename=myrecording.jfr

然后使用,JMC 打开“.jfr文件”就可以分析了,方法、异常、线程、IO 等应有尽有,其功能非常强大。

画外音:我在 mac 上尝试打开了几次 JMC ,嗯,好卡,一直使用不了。

四、 参考文档

《Java 核心技术 36 讲》

更多文章欢迎关注公众号 ETLshow ,信息爆炸,我们来筛!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值