Mybatis plus查询开用了Redis缓存,一开始挺快,用户多/时间拉长就变慢了
0. 背景
为某医药数据企业定制了高级数据分析查询系统,主要功能是查询,数据总量不算多,但涉及客户数据权限、时间权限,SQL查询逻辑冗长复杂,SQL查询缓慢,于是对于某些查询开启了"缓存"处理,系统启用缓存后,效果明显,于是开心上线。
整体技术Vue3 + Spring Boot + Mybatis + Oracle + Redis + Nacos,全部部署在了一台配置了32CPU + 128G内存 + 2T存储的Windows Server虚拟机里。
1、问题及初步解决
系统正式上线,几天后客户反馈,查询缓慢,怀疑查询业务服务卡顿,于是重启业务服务及Redis缓存后,立刻恢复。
随后客户反馈,又不行了,于是查看情况,首页是汇总查询,我们是开了缓存,正常情况是100ms,接口即可返回数据,慢时候,接口返回需要1.3秒,最初还怀疑是网络限速了,但重启全部服务后又没有问题,响应慢时,PL/SQL里看SQL查询也会较平时慢,但也没有借口卡顿的慢,还是疑惑为何,难道真的是用户量上来了,服务顶不住了。
从未怀疑过Redis的问题,于是偶然间,重启了下Redis,性能立刻恢复,发现了问题点,于是暂时写个脚本先将Redis每晚都重启一下临时解决了这个问题。
2、发现原因
问题点找到了,但是问题原因没找到,所以也没法彻底解决,由于对Mybatis、Redis没有过于深度学习和研究,读写都是它自己处理的,另