当前位置: 首页 > news >正文

线上jvm假死问题排查

1.线上告警接口超时
在这里插入图片描述
看接口是用户服务,查看nacos服务实例,发现有一个节点已经下线了

3.找到对应节点所在服务器,jps -l 命令发现用户服务还在,初步判断是假死

4.使用 jstat -gc 进程id 1000 每秒打印gc情况,发现频繁full gc,平均3秒一次,然后每次gc时间大概3~4秒
在这里插入图片描述

5.jmap -heap 进程id发现新生代和老年代都满了,紧急生成堆转储 jmap -dump:format=b,file=heapdump.hprof ,然后重启服务

6.使用MAT分析堆栈信息,排查内存泄漏的问题,看到分析是mysql查询时有占用了1.1G左右,jvm才配置了2G,当时想到可能是无条件查询导致查询了大量数据
在这里插入图片描述

7.继续排查看到线程的堆栈指向的业务代码是查询用户,看了下相关逻辑是有传手机号码查询用户的
在这里插入图片描述
8.由于是查询数据库占用了大量堆内存,所以判断当时查询肯定是很慢的,所以看了阿里云数据库的慢sql记录,果然发现查询返回了150多万数据
在这里插入图片描述
9.看了具体SQL是手机号码传1,使用的是模糊匹配,导致所有用户都查出来了

select * from user where mobile LIKE '%1%'

10.调整代码为不使用模糊搜索,解决问题

select * from user where mobile = '1'

相关文章:

  • 从零开始的抽奖系统创作(2)
  • AUTOSAR图解==>AUTOSAR_SRS_SecureOnboardCommunication
  • 精益数据分析(71/126):从移情到黏性——创业阶段的关键跨越与数据驱动策略
  • 建站系统哪个好?
  • 从头实现react native expo本地生成APK
  • srs-7.0 支持obs推webrtc流
  • 破解误区:WebView 调试常见认知误区与 WebDebugX 实践指南
  • 纯前端实现 导入/导出/模板下载功能
  • 前端无感登录刷新
  • 汉得集星獭1.8.0正式发布,高效集成再赋能!
  • 苍穹外卖04 新增菜品菜品分页查询删除菜品修改菜品
  • Vue3.0教程005:watch监视ref定义的【基本类型】数据和【对象类型】数据
  • 数据结构与算法分析实验14 实现基本排序算法
  • 5.2.4 wpf中MultiBinding的使用方法
  • 保密行业工作沟通安全:吱吱软件的“四重防泄露”设计
  • Python虚拟环境再PyCharm中自由切换使用方法
  • Git 和 GitHub 学习指南本地 Git 配置、基础命令、GitHub 上传流程、企业开发中 Git 的使用流程、以及如何将代码部署到生产服务器
  • Linux 的 TCP 网络编程 -- 回显服务器,翻译服务器
  • C#处理印尼地区的数字分隔符方法
  • leetcode 162. Find Peak Element
  • 住建部:2019年至2024年,全国累计开工改造老旧小区28万个
  • 多家国有大行存款利率即将迎来新一轮下调
  • 贵州茅台股东大会回应八大热点:确保茅台酒价格体系稳固,相信自我调节能力
  • 最高法:依法惩治损害民营企业合法权益的串通投标行为
  • 肖钢:一季度证券业金融科技投资强度在金融各子行业中居首
  • 以开放促发展,以发展促开放,浙江加快建设高能级开放强省