项目

一般

简介

hibernate二级缓存导致应用卡顿

qiu jk大约 3 年 之前添加

工具: arthas + jprofile + mat

分析过程:首先是查看cup占用,发现cpu占用并不高 于是用arthas查看应用内cpu占用率,如下图所示,最高cpu为VM Thread 这个线程,是jdk的类使用的线程占用应用内存高,此处并不能看出主要问题

于是去查看GC,看是否频繁触发GC,但一直刷新发现GC并未异常。

于是Jmap -dump下内存快照,然后用JProfile进行分析, 可见最大对象为hibernate的二级缓存,但是占用也不高,

于是用mat进行分析,查看可疑点,如下图

大致意思就是jdbc连接有异常,于是百度查看hibernate.queryplancache这个发方法,查到类似问题的解决方案如下。

附件为当时的jstack