快速定位Java应用卡顿的原因
快速定位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应用卡顿的原因的更多相关文章
- android中fragment卡顿的原因
首页的ViewPager有十几个Fragment,在快速切换的时候,容易产生卡顿现象. 二.分析当ViewPager切换到当前的Fragment时,Fragment会加载布局并显示内容,如果用户这时快 ...
- android中listview滑动卡顿的原因
导致Android界面滑动卡顿主要有两个原因: 1.UI线程(main)有耗时操作 2.视图渲染时间过长,导致卡顿 http://www.tuicool.com/articles/fm2IFfU
- firefox中outlook.com页面卡顿的原因
在火狐中使用outlook.com时,鼠标点击动作后,页面会卡顿一段时间,每次点击都是如此. 因为之前火狐出现由于硬件加速导致页面卡顿的情况,因此第一反应就是关闭硬件加速. 果然,关闭硬件加速后,页面 ...
- 快速定位java系统的线上问题--转
原文地址:http://m.blog.csdn.net/article/details?id=43376943 前言:我们的场景并没有像BAT等大型互联网公司里的系统那么复杂,但是基本上也有一定的规模 ...
- Linux 下定位java应用 cpu高的原因(转)
使用场景: 遇到Linux下java应用cpu占用很高的时候,我们很想知道此时的应用到底在做什么导致资源的消耗. 方便我们进一步定位和优化~ 1.查询cpu耗用top5的进程(你也可以top10) [ ...
- eclipse快速定位java对应的class
当前设置值,只能定位class文件 设置eclipse External Tools Configurations... Program --> new New 创建viewclass.bat文 ...
- android textview settext卡顿深层次原因
最近在公司项目里面发现listview里面的textview在调用settext函数的时候非常耗时,当时都有点不敢相信,这是因为如果你把textview设置成wrap_content,则每次调用set ...
- Android app 性能优化的思考--性能卡顿不好的原因在哪?
说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...
- 性能优化 BlockCanary 卡顿监测 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Android 界面滑动卡顿分析与解决方案(入门)
Android 界面滑动卡顿分析与解决方案(入门) 导致Android界面滑动卡顿主要有两个原因: 1.UI线程(main)有耗时操作 2.视图渲染时间过长,导致卡顿 目前只讲第1点,第二点相对比较复 ...
随机推荐
- 文心一言 VS 讯飞星火 VS chatgpt (169)-- 算法导论13.2 2题
二.用go语言,证明:在任何一棵有 n 个结点的二叉搜索树中,恰有 n-1种可能的旋转. 文心一言: 要证明在任何一棵有 n 个结点的二叉搜索树中,恰有 n-1 种可能的旋转,我们可以按照以下步骤逐步 ...
- BUUCTF-Crypto详细Writeup
每一天都要努力啊 ----2024-01-01 18:11:36 1.一眼就解密 原题:下面的字符串解密后便能获得flag:ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUkl ...
- 如何在IIS上部署docsify以及404问题
操作步骤 创建一个文件夹,在文件夹中新建2个文件 index.html:入口文件,整个网站只需要这个html文件,其他文件都是md文件 README.md:主页内容,如果没有这个文件,访问时提示404 ...
- CodeForces 1141F2 贪心 离散化
CodeForces 1141F2 贪心 离散化 题意 给定一个序列,要求我们找出最多数量的不相交区间,每个区间和都相等. 思路 一开始没有头绪,不过看到 \(n \le 1500\) 后想到可以把所 ...
- POJ 3003 DP 寻路 记录路径
POJ 3003 DP 寻路 记录路径 我一开始把M看成是每个a_i的上限了,这是致命的,因为这个题dfs暴力搜索+剪枝是过不了的因为M<=40,全部状态有2的四十次幂. 正解是DP,设dp[i ...
- 微信小程序中业务域名的配置
需要配置业务域名,需要先将域名http转https 1,首先在该微信小程序的公众号平台中下载 业务域名的证书 2,将下载的证书放进nginx的根目录 3,在nginx中 (root为.txt的地址)
- 神经网络基础篇:详解二分类(Binary Classification)
二分类 注:当实现一个神经网络的时候,通常不直接使用for循环来遍历整个训练集(编程tips) 举例逻辑回归 逻辑回归是一个用于二分类(binary classification)的算法.首先从一个问 ...
- 大数据实践解析(下):Spark的读写流程分析
导读: 众所周知,在大数据/数据库领域,数据的存储格式直接影响着系统的读写性能.spark是一种基于内存的快速.通用.可扩展的大数据计算引擎,适用于新时代的数据处理场景.在"大数据实践解析( ...
- 华为云API Explorer:自动化运维的得力助手
华为云API Explorer为开发者提供一站式API解决方案统一平台,集成华为云服务所有开放API,支持全量快速检索.可视化调试.帮助文档.代码示例等能力,帮助开发者快速学习API,使用API开发代 ...
- openGemini内核源码正式对外开源
摘要:openGemini是一个开源的分布式时序数据库系统,可广泛应用于物联网.车联网.运维监控.工业互联网等业务场景,具备卓越的读写性能和高效的数据分析能力. 本文分享自华为云社区<华为云面向 ...