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

河北唐山建设工程协会网站长沙58同城招聘信息

河北唐山建设工程协会网站,长沙58同城招聘信息,主机网站建设制作,seo教程视频论坛目录 1.排查方式2.结论3.解决办法 前言#xff1a;在生产环境中有一个后端程序多次报oom然后导致程序中断。 1.排查方式 通过下载后端程序产生的oom文件#xff0c;将oom文件导入MemoryAnalyzer程序分析程序堆内存使用情况。 1、将oom文件导入MemoryAnalyzer后可以看到概览信… 目录 1.排查方式2.结论3.解决办法 前言在生产环境中有一个后端程序多次报oom然后导致程序中断。 1.排查方式 通过下载后端程序产生的oom文件将oom文件导入MemoryAnalyzer程序分析程序堆内存使用情况。 1、将oom文件导入MemoryAnalyzer后可以看到概览信息界面。总共堆空间是5.6G【org.hibernate.internal.SessionFactoryImpl 0x6c9877ab8】 这个对象占用 128 B 回收后可释放 4.8 GB接下来看一下这个里面有哪些对象 2、第二步我们点开泄漏疑点看下分析报告 3、通过分析报告看到 org.hibernate.internal.SessionFactoryImpl 这个对象引用占用了总内存的 85.53%总共引用大小是 5,116,381,640 字节也就是 4.8G的大小。可以看到他引用了 QueryPlanCache 这个对象。 4、点开左上角第二个图标对象创建直方图这里可以看到每个类有多少个实例以及占用的内存。 可以看到这个char占用了很多内存可以右键 List objects → with incoming references就可以列出所有的char[]实例以及每个char[]的整个引用关系链 通过关系链可以看到char实例都是存储的一些sql语句点开第一个发现最后被HQLQueryPlan查询计划类引用了 5、点开左上角第三个图标打开整个堆的支配树可以看到第一个实例占比达到了 85.53%。 我们点开这个占比 85.53% 的对象发现都是被 org.hibernate.internal.util.collections.BoundedConcurrentHashMap 这个对象引用了。 往下继续点开发现基本都是查询语句发现每个查询语句都是一样的就是后面in的参数不同继续点开其他的发现都是这个语句 select count(generatedAlias0) from BizReportCatalogAttach as generatedAlias0 where generatedAlias0.bizTableFillId in (:param0_0, :param0_1, :param0_2, .... , :param0_68)点开这个sql语句的参数发现 in 里面有3万多个参数其他的SQL语句都是一样就是 in 的参数不一样所以被缓存起来了 2.结论 至此可以判断是被 Hibernate QueryPlanCache 查询计划JPQL缓存导致的问题。里面的SQL每次执行时随着in的参数不同导致Hibernate重复缓存SQL hibernate会缓存sql语句以减少重复编译便于直接命中提高效率。这个缓存默认QueryPlanCache的map entry默认容量上限是2048且在使用in时只要in后面的参数有任何一个不一样的就会视为不同的语句而保存下来。 3.解决办法 通过配置Hibernate缓存sql语句的最大个数配置来限制缓存个数 在application.properties中添加如下配置 #指定Hibernate查询计划缓存sql语句的最大个数, 默认2048, 详见org.hibernate.engine.query.spi.QueryPlanCache spring.jpa.properties.hibernate.query.plan_cache_max_size64 #指定Hibernate查询计划参数元数据缓存的最大大小, 管理缓存中ParameterMetadata实例的数量(默认为128), 详见org.hibernate.engine.query.spi.QueryPlanCache spring.jpa.properties.hibernate.query.plan_parameter_metadata_max_size32如果hibernate 5.2.17时还可以添加此配置以减少IN子句的SQL计划缓存。 参考文档https://docs.jboss.org/hibernate/orm/5.6/userguide/html_single/Hibernate_User_Guide.html #Hibernate可以根据参数格式的几何算法进行生成缓存例如生成2个参数、4个参数、2^2个参数的SQL从而优化IN子句的使用减少不必要的SQL计划缓存避免因大量使用IN查询而导致内存溢出的问题‌ spring.jpa.properties.hibernate.query.in_clause_parameter_paddingtrue添加配置后通过debug启动可以在这里打断点看下我们的配置是否生效我们在这里能看到上面很熟悉的三个身影SessionFactoryImplementor、QueryPlanCache、BoundedConcurrentHashMap 这三个类SessionFactoryImplementor 的引用占用了85.53%的堆空间
http://www.eeditor.cn/news/126118/

相关文章:

  • 怎么做外贸网站seo在网站上做宣传属于广告费用吗
  • 什么主题的网站容易做点上海紫博蓝网站
  • 网站建设数据库ER图怎么画昆明企业网站开发公司
  • 无锡网站建设方案维护帮别人做违法网站会判刑吗
  • asp.net+mvc+网站开发广州市招标公告
  • 安达网站制作百度网页版入口链接
  • 西安网站建设资讯怎么找到合适的网站建设商
  • 网站改版后百度不收录建设银行云南分行招聘网站
  • 汽车配件外贸网站展馆设计方案ppt
  • 网站后台是怎样制作深圳网页制作搜行者seo
  • 口碑好的唐山网站建设Wordpress elgg
  • 深圳网站系统找哪里百度优化排名
  • 对电子商务网站建设的感想交互网站建设
  • 深圳网站制作工作室巩义市住房城乡建设局网站
  • 电子商务网站建设与管理课程的感想网站头部修改
  • 做优化需要发多少个网站新城疫怎么治疗
  • 帮人建网站价格赚钱吗多多短视频下载赚钱
  • 北京注册公司多少钱seo优化技术
  • 老牌网站建设柳城企业网站建设公司
  • 用easyui皮肤做漂亮的网站免费网页转app
  • 大型网站得多少钱discuz修改网站底部
  • 网站内容编辑怎么做兰州新区城乡建设局网站
  • 福州外贸网站制作石家庄百成网络
  • 网站建设与管理简答题长春网站优化实战
  • 医院网站建设情况说明书徐州网站开发设计公司电话
  • 免费做的网站怎么设置域名百度指数有三个功能模块
  • 设计公司网站需要考虑什么临沂网站临沂网站制作
  • 网站建设人员培训用html做的网站加背景音乐
  • 会计网站模板湖州做网站优化
  • 二级域名做网址导航大全网站温州好的网站推广