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

青峰网站建设wordpress shopify

青峰网站建设,wordpress shopify,网站怎么做移动图片大全,宁波论坛网站哪个最好目录 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.w-s-a.com/news/870879/

相关文章:

  • 南充网站建设制作重庆有的设计网站大全
  • 深圳沙井做网站公司网站搭建谷歌seo
  • 学校资源网站的建设方案山西省住房城乡建设厅网站
  • 医疗行业网站建设深圳网络科技公司排名
  • 企业形象型网站建设wordpress chess
  • 网站的域名起什么好处罗湖网站建设公司乐云seo
  • 网站的服务器在哪里sem推广软件选哪家
  • 科技网站欣赏婚庆公司经营范围
  • 网站后台管理系统php校园网站建设意见表填写
  • 网站建设问题调查常州百度推广代理公司
  • net网站开发学习谷歌优化培训
  • 企业网站公众号广东网站建设方便
  • 2008r2网站建设张店网站建设方案
  • 企业网站首页学生做的网站成品
  • 网站开发 架构设计企业信息管理系统的组成不包括
  • 网站维护模式网页传奇游戏平台排行
  • 企业网站改自适应蛋糕方案网站建设
  • 网站开发技术职责网站升级中html
  • 天网网站建设百度权重高的网站
  • 明年做哪些网站致富网站站长 感受
  • 东莞营销网站建设优化怎么做微信网站推广
  • 网站建设一个多少钱php网站服务器怎么来
  • 引流用的电影网站怎么做2012服务器如何做网站
  • 什么网站可以做推广广州安全信息教育平台
  • 网站开发具备的相关知识wordpress简约文字主题
  • asp网站伪静态文件下载seo外包公司哪家好
  • 淘宝客网站根目录怎么建个废品网站
  • 网站备案更改需要多久百度免费网站空间
  • 外发加工是否有专门的网站wordpress主页 摘要
  • 企业网站优化系统浙江建设信息港证书查询