线上java程序CPU及内存占用过高问题排查总结

背景

最近发现线上的一个JAVA程序总是过段时间慢慢卡死,最后导致无法提供服务,外部请求接口超时。
经排查发现,该程序CPU及内存占用都很高,导致整个系统负载很高。
到这里,就想到了对程序内存进行分析。

排查过程

查询负载高的进程

使用top命令查询负载高的进程,获取负载高的进程id

在这里插入图片描述
由此,可见,该进程id为4140。

查看该进程负载最高的线程

使用 top -H -p 进程id ,命令查看某个进程进程负载最高的进程,并获取该进程id, 这里的进程id为4140.

在这里插入图片描述
由此可以看出,消耗资源的线程id为4152.

转换线程id为16进制

用 printf "%x\n" 4152  ,命令转换结果为1038

查询繁忙线程的线程信息

用 jstack 4140 | grep “1038” -A 100,结果如下:
“VM Thread” os_prio=0 tid=0x00007f179813e800 nid=0x1038 = runnable

“Gang worker#0 (Parallel GC Threads)” os_prio=0 tid=0x00007f1798021000 nid=0x1a03a runnable

“Gang worker#1 (Parallel GC Threads)” os_prio=0 tid=0x00007f1798023000 nid=0x1a03b runnable

“Gang worker#2 (Parallel GC Threads)” os_prio=0 tid=0x00007f1798025000 nid=0x1a03c runnable

“Gang worker#3 (Parallel GC Threads)” os_prio=0 tid=0x00007f1798026800 nid=0x1a03d runnable

“Concurrent Mark-Sweep GC Thread” os_prio=0 tid=0x00007f1798069800 nid=0x1a03e runnable

“VM Periodic Task Thread” os_prio=0 tid=0x00007f17981b6800 nid=0x1a048 waiting on condition

JNI global references: 2651

   通过以上信息,我们可以看到VM Thread字样,可以判断为虚拟机线程频繁GC导致问题发生。如果没有这个字样就是程序线程消耗资源过高导致错误问题,处理方法就要另外处理了。

导出进程堆内存并定位代码

使用jmap -dump:format=b,file=heap.hprof 4140 导出进程堆内存。
用jvisualvm命令可以查看并分析堆信息。
经过分析发现堆内存中有个AES加密使用的类的对象引用过多,占了1.9G内存,因此,AES加密代码存在问题,最终解决问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/75731.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

直播预告|还在说做不出、改不好地图贴图?一次直播包教包会!

在EasyV中,地图组件通常会作为可视化大屏中的「主视觉」部分,用户通过地图组件的使用,可以极大程度上提高搭建的效率以及视觉效果。正因如此,我们的素材广场中大多模板也将「地图」作为核心部分,以此来方便用户快速套用…

golang函数传参——值传递理解

做了五年的go开发,却并没有什么成长,都停留在了业务层面了。一直以为golang中函数传参,如果传的是引用类型,则是以引用传递,造成这样的误解,实在也不能怪我。我们来看一个例子,众所周知&#xf…

#rust taur运行报错#

场景:在window11系统上运行 tauri桌面莹应用,提示错误。 Visual Studio 2022 生成工具 安装的sdk11 , rust运行模式是stable-x86_64-pc-window-gnu, 运行npm run tauir dev 一致失败,失败信息如下 原因:1:在window11系…

数字图像处理(番外)图像增强

图像增强 图像增强的方法是通过一定手段对原图像附加一些信息或变换数据,有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征,使图像与视觉响应特性相匹配。 图像对比度 图像对比度计算方式如下: C ∑ δ δ ( i , j …

【方法】PDF可以转换成Word文档吗?如何操作?

很多人喜欢在工作中使用PDF,因为PDF格式可以准确地保留文档的原始格式,比如字体、图像、布局和颜色等。 但如果编辑文档的话,PDF还是没有Word文档方便。那可以将PDF转换成Word格式,再来编辑吗?如何操作呢?…

Vue2 第二十节 vue-router (一)

1.相关概念理解 2.基本路由 3.嵌套路由(多级路由) 一.相关概念理解 1.1 vue-router的理解 路由:就是一组key-value的对应关系, key为路径,value可能是function或者component多个路由,需要经过路由器的管理编程中的…

从0到1开发go-tcp框架【2-实现Message模块、解决TCP粘包问题、实现多路由机制】

从0到1开发go-tcp框架【2-实现Message模块、解决TCP粘包问题、实现多路由机制】 1 实现\封装Message模块 zinx/ziface/imessage.go package zifacetype IMessage interface {GetMsdId() uint32GetMsgLen() uint32GetMsgData() []byteSetMsgId(uint32)SetData([]byte)SetData…

docker容器互联详解

目录 docker容器互联详解 一、容器互联概述: 二、案例实验: 1、用户自定义的网络: 2、查看当前的IP信息: 3、启动第三个容器: 4、查看三个容器内部的网络: 5、Ping测试: Ps备注&#x…

wpf画刷学习1

在这2篇博文有提到wpf画刷, https://blog.csdn.net/bcbobo21cn/article/details/109699703 https://blog.csdn.net/bcbobo21cn/article/details/107133703 下面单独学习一下画刷; wpf有五种画刷,也可以自定义画刷,画刷的基类都…

web服务

静态网页与动态网页的区别 在网站设计中,静态网页是网站建设的基础,纯粹 HTML 格式的网页通常被称为“静态网页”,静态网页是标准的 HTML 文件,它的文件扩展名是 .htm、.html,可以包含文本、图像、声音、FLASH 动画、…

使用ffplay播放scrcpy server 视频流

使用ffplay播放scrcpy server 视频流 以windows平台为例 1 下载scrcpy windows平台安装包并解压 下载连接 2 确认版本 .\scrcpy.exe -v3 push server到Android设备 adb push scrcpy-server /data/local/tmp/scrcpy-server-manual.jar4 forward 端口 adb forward tcp:12…

局域网部署,用WorkPlus视频会议保密又安全

用户采用私有化部署视频会议软件的情况主要有以下几种因素: 1. 针对机密性高的会议:如果有涉及高度机密的商业谈判或敏感信息交流等重要会议,政府、军工、企业等用户会选择局域网内部署视频会议软件,以保证信息安全。 2. 频繁进…

iPhone 7透明屏的显示效果怎么样?

iPhone 7是苹果公司于2016年推出的一款智能手机,它采用了4.7英寸的Retina HD显示屏,分辨率为1334x750像素。 虽然iPhone 7的屏幕并不是透明的,但是苹果公司在设计上采用了一些技术,使得用户在使用iPhone 7时可以有一种透明的感觉…

自然语言处理学习笔记(一)————概论

目录 1.自然语言处理概念 2.自然语言与编程语言的比较 (1)词汇量: (2)结构化: (3)歧义性: (4)容错性: (5&#xff0…

Docker 安装 MySQL5.6

方法一、docker pull mysql 查找Docker Hub上的mysql镜像 #docker search mysql 这里我们拉取官方的镜像,标签为5.6 #docker pull mysql:5.6 (第一次启动Docker-MySql主要是查看Docker里面MySQL的默认配置,数据位置,日志位置,配…

【C++】开源:Linux端V4L2视频设备库

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Linux端V4L2视频设备库。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下…

解决一个Yarn异常:Alerts for Timeline service 2.0 Reader

【背景】 环境是用Ambari搭建的大数据环境,版本是2.7.3,Hdp是3.1.0;我们用这一套组件搭建了好几个环境,都有这个异常告警,但hive、spark都运行正常,可以正常使用,所以也一直没有去费时间解决这…

斯坦福大学提出在类别层级对多零件多关节三维拼装新方法

来源:投稿 作者:橡皮 编辑:学姐 paper:https://arxiv.org/pdf/2303.06163.pdf 背景: 形状装配通过排列一组简单或基本的零件几何图形来组成复杂的形状几何图形。许多重要的任务和应用都依赖于形状装配算法。 计算机…

棱镜七彩正式加入龙蜥社区安全联盟(OASA)

近日,龙蜥社区安全联盟(OASA)正式成立,棱镜七彩成为该联盟成员单位。 龙蜥社区安全联盟是促进产业合作的非营利组织,致力于打造中立开放、聚焦操作系统信息安全的交流平台,推进龙蜥社区乃至整个产业安全生态…

js实现原型链污染,沙箱绕过

一、沙箱绕过 1.概念 沙箱绕过"是指攻击者利用各种方法和技术来规避或绕过应用程序或系统中的沙箱(sandbox)。沙箱是一种安全机制,用于隔离和限制应用程序的执行环境,从而防止恶意代码对系统造成损害。它常被用于隔离不受信…