【OOM问题】hibernate QueryPlanCache引发的heap区内存溢出

目录

一、参考资料

二、查阅解决办法

三、问题描述

四、解决方案与效果展示


一、参考资料

hibernate QueryPlanCache引发的heap区内存溢出_人生如逆旅,我亦是行人。。。-CSDN博客

记一次OOM排查解决【图文】_zhuwensheng_51CTO博客

记录一次 java内存泄漏的排查 - 我的小时代 - 博客园

问题总结----记一次Jpa In语句QueryPlanCache导致的JVM内存溢出_cyfblog的博客-CSDN博客

记一个内存泄漏问题:Query Plan Cache BoundedConcurrentHashMap占用堆内存_yogima的博客-CSDN博客

二、查阅解决办法

Hibernate 中文文档 | Hibernate 中文网

https://docs.jboss.org/hibernate/orm/5.6/quickstart/html_single/

https://docs.jboss.org/hibernate/orm/5.6/userguide/html_single/Hibernate_User_Guide.html

QueryPlanCache 内存泄漏解决方法_这就是快乐嘛-CSDN博客

How to improve statement caching efficiency with IN clause parameter padding - Vlad Mihalcea

hibernate.query.plan_cache_max_size=128

hibernate.query.plan_parameter_metadata_max_size=64

        这个方案的问题,您可能会损失性能。如果您修复了计划缓存大小,但仍然没有修复填充缓存的实际查询 - 您的所有缓存可能会被该错误查询填充,从而没有空间来缓存其他查询。因此缓存可能大部分时间都在忙于那个糟糕的查询,而其他查询的性能可能会降低, 因为它们没有被正确缓存或过早从缓存中被逐出

三、问题描述

    /**
     * 根据UID批量查询
     * // TODO: 2021/11/19 会产生大量QueryCache缓存
     */
    List<BaseUserEntity> findByIdIn(List<Long> ids);

 

 

Class Name                                                                                                                                                                                                                                                                                   | Shallow Heap | Retained Heap | Percentage
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
byte[12265] @ 0x92edb390  select generatedAlias0 from BaseUserEntity as generatedAlias0 where generatedAlias0.id in (:param0_0, :param0_1, :param0_2, :param0_3, :param0_4, :param0_5, :param0_6, :param0_7, :param0_8, :param0_9, :param0_10, :param0_11, :param0_12, :param0_13, :param0...|       12,288 |        12,288 |      0.00%
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 

 重启之前65%堆内存,重启之后20-30%

四、解决方案与效果展示

 

hibernate.query.in_clause_parameter_padding=true

优化之前

 调整参数优化之后

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值