快速定位Java应用卡顿的原因


背景

同事的环境说出现了一周的卡顿现象.
元旦加班期间告诉我时已经是2024.1.1下午五点了.
当时没有来得及去查看.
上班之后发现问题很简单. 不过为了能够指导一下后续的工作.还是在这里总结一下操作过程.

判断问题的整体思路

0. 同事告知出现卡顿.
询问卡顿的现象: 程序启动后, 运行一段时间后就卡顿. 无法缓解. 1. 查看宿主机以及虚拟机的情况:
判断是否是宿主机性能导致问题. 发现宿主机的CPU较高, 但是大部分CPU在这一台机器上面. 2. 进入Linux系统. top -Hp 进行观察
发现java进程占用CPU忽高忽低, 基本确认是在fullGC. 怀疑产品有内存泄露. 3. jstat -gcutil $pid 1000 1000
查看GC次数, 发现基本上10秒左右一次FullGC.基本确认存在问题. 4. jcmd $pid GC.heap_dump /root/20240102.dump
转储dump文件, 并且使用mat进行分析 5. 查看leak suspect 以及进行查看堆栈信息. 按照使用的堆区大小进行排序
定位到具体的内存占用较高的点. 发现是发送消息时因为获取了所有的消息体导致内存占用量大. 并且消息发送一分钟一次,较为频繁. 6. 反馈给业务开发, 调整消息发送时的个数限制,以及增加频率限制. 避免一次性进行所有消息的发送, 导致系统阻塞.

关于jcmd命令的使用

jcmd 从jdk7 开始就是java自带的应用了
其实是java应用里面进行定位问题的最佳工具之一. 需要建议, 如果程序使用哪个版本的java, 必须使用相同版本的 jcmd 等工具进行分析
不然那会出现加载失败等的问题.

jcmd 的命令介绍

jcmd -l
与jps 一样 展示所有的 正在运行的java 进程. jcmd $pid help
查看jcmd的帮助列表, 需要说明. 不同版本的jcmd包含的命令不太一样
可以直接使用jcmd 0 help 进行查看. [root@CentOS8 ~]# jcmd 0 help
2096872:
The following commands are available:
VM.native_memory
ManagementAgent.stop
ManagementAgent.start_local
ManagementAgent.start
VM.classloader_stats
GC.rotate_log
Thread.print
GC.class_stats
GC.class_histogram
GC.heap_dump
GC.finalizer_info
GC.heap_info
GC.run_finalization
GC.run
VM.uptime
VM.dynlibs
VM.flags
VM.system_properties
VM.command_line
VM.version
help 比较常用的其实有 jcmd 0 VM.flags
jcmd 0 VM.system_properties
jcmd 0 VM.command_line
jcmd 0 GC.heap_info
jcmd 0 GC.class_histogram
jcmd 0 Thread.print
jcmd 0 GC.heap_dump /path/to/gcfile 除此之外 还有
jstat -gcutil pid 1000 1000 每秒钟展示一次gc信息.

快速定位Java应用卡顿的原因的更多相关文章

  1. android中fragment卡顿的原因

    首页的ViewPager有十几个Fragment,在快速切换的时候,容易产生卡顿现象. 二.分析当ViewPager切换到当前的Fragment时,Fragment会加载布局并显示内容,如果用户这时快 ...

  2. android中listview滑动卡顿的原因

    导致Android界面滑动卡顿主要有两个原因: 1.UI线程(main)有耗时操作 2.视图渲染时间过长,导致卡顿 http://www.tuicool.com/articles/fm2IFfU 

  3. firefox中outlook.com页面卡顿的原因

    在火狐中使用outlook.com时,鼠标点击动作后,页面会卡顿一段时间,每次点击都是如此. 因为之前火狐出现由于硬件加速导致页面卡顿的情况,因此第一反应就是关闭硬件加速. 果然,关闭硬件加速后,页面 ...

  4. 快速定位java系统的线上问题--转

    原文地址:http://m.blog.csdn.net/article/details?id=43376943 前言:我们的场景并没有像BAT等大型互联网公司里的系统那么复杂,但是基本上也有一定的规模 ...

  5. Linux 下定位java应用 cpu高的原因(转)

    使用场景: 遇到Linux下java应用cpu占用很高的时候,我们很想知道此时的应用到底在做什么导致资源的消耗. 方便我们进一步定位和优化~ 1.查询cpu耗用top5的进程(你也可以top10) [ ...

  6. eclipse快速定位java对应的class

    当前设置值,只能定位class文件 设置eclipse External Tools Configurations... Program --> new New 创建viewclass.bat文 ...

  7. android textview settext卡顿深层次原因

    最近在公司项目里面发现listview里面的textview在调用settext函数的时候非常耗时,当时都有点不敢相信,这是因为如果你把textview设置成wrap_content,则每次调用set ...

  8. Android app 性能优化的思考--性能卡顿不好的原因在哪?

    说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...

  9. 性能优化 BlockCanary 卡顿监测 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  10. Android 界面滑动卡顿分析与解决方案(入门)

    Android 界面滑动卡顿分析与解决方案(入门) 导致Android界面滑动卡顿主要有两个原因: 1.UI线程(main)有耗时操作 2.视图渲染时间过长,导致卡顿 目前只讲第1点,第二点相对比较复 ...

随机推荐

  1. 去年最火的 JS 开源项目「GitHub 热点速览」

    近日,「Best of JS」发布了过去一年在 GitHub 上 Star 数增速最快的 JavaScript 开源项目(2023 JavaScript Rising Stars),前 10 的开源项 ...

  2. vue-admin-template动态菜单后台获取菜单

    vue-admin-template.vue-element-admin配置动态菜单,菜单数据从后台获取. 我在网上search了几个小时也没有找到想要的emm,翻官网也没有说明,只说明了路由覆盖.只 ...

  3. AntDesignBlazor示例——暗黑模式

    本示例是AntDesign Blazor的入门示例,在学习的同时分享出来,以供新手参考. 示例代码仓库:https://gitee.com/known/BlazorDemo 1. 学习目标 暗黑模式切 ...

  4. 文心一言 VS 讯飞星火 VS chatgpt (55)-- 算法导论6.3 1题

    文心一言 VS 讯飞星火 VS chatgpt (55)-- 算法导论6.3 1题 一.参照图6-3 的方法,说明 BUILD-MAX-HEAP在数组 A=(5,3,17,10,84,19,6,22, ...

  5. vue部署项目报错导致空白页解决

    在nginx上部署项目出现空白页并报错 解决方法: 在vue的vue.config.js文件中 改成:module.exports = {publicPath: './'}

  6. 你应该知道的数仓安全——默认权限实现共享schema

    摘要: 一种典型客户场景是一些用户是数据的生产方,需要在schema中创建表并写入数据:而另一些用户是数据的消费方,读取schema中的数据做分析.使用Alter default privilege语 ...

  7. 图解 Redis丨这就是 RDB 快照,能记录实际数据的

    摘要:所谓的快照,就是记录某一个瞬间东西,比如当我们给风景拍照时,那一个瞬间的画面和信息就记录到了一张照片.RDB 快照就是记录某一个瞬间的内存数据,记录的是实际数据. 本文分享自华为云社区<图 ...

  8. 使用MRS CDL实现实时数据同步的极致性能

    摘要:MRS CDL旨在实现最大的数据复制吞吐量和低复制延迟. 本文分享自华为云社区<使用MRS CDL实现实时数据同步的极致性能>,作者:大数据修行者 . MRS CDL提供从多个RDB ...

  9. Net 高级调试之十六:平台互用性及P/Invoke和内存泄漏调试

    一.简介 今天是<Net 高级调试>的第十六篇文章,也是这个系列的最后一篇文章了.既然是最后一篇文章,我需要在这里说明一下,我当前的这个系列,不是针对<Net 高级调试>这本书 ...

  10. 从“13 天”到“0 天”延时,揭秘火山引擎 DataLeap SLA 保障最佳实践

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 在数据治理中,如何实现 SLA 保障一直是"老大难"问题. 随着某房产 APP 稳定发展,楼盘 ...