润乾内存溢出解决方案.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
内存溢出作为软件使用过程中极其不希望看到的难题,一直困扰着软件开发与使 用者。当然在报表应用的使用过程中,如果配置或使用不当也会出现内存溢出的 问题。出现内存溢出的问题我们要敢于面对, 要通过适当的排查方法和相应的解 决步骤一步一步找到问题出现的原因并最终解决掉该问题。 本文对使用报表过程中出现内存溢出问题进行简单地分析, 给出一些建议性的排 查步骤和解决方法。 排查步骤与解决办法 1定位问题 首先我们要判断出现的问题是否是由于内存溢出引起的, 典型的后台信息是带有 Out Of Memory字样,但是也不排除其他内存溢出的提示,如 tomcat内存溢出 可出现三种提示信息: Java heap space、PermGenspace 和 unable to create new native thread 。而有时线程死锁也会导致应用挂掉。所以我们看到具体出错信 息如果判断不出是何种问题,最好上网查询确认一下。 2判断是否与报表有关 一般来说,任何应用都可能出现内存溢出,所以当我们确定出现了内存溢出, 接 下来要做的就是划分区域,判断内存溢出是哪部分引起的。 一般报表应用与客户自己应用相结合的系统出现内存溢出的问题, 需要判断 该问题是否是由报表引起的?具体方法是单独部署报表应用并执行原操作, 看是 否会出现内存溢出。若此步骤问题重现,贝U按照如下步骤进行;否则,可能说明 与报表无关,当然也可以按照下面的步骤继续进行排查。 3查找问题出现的共性 一般内存溢出不会只出现一次,这就要求我们记录每次出项问题的共性。女口:是 否访问某张特定报表时出现?是否访问量达到一定程度时出现?是否访问一些 大数据量报表时出现? 下面给出在如下情况下的建议设置: 3.1访问某个特定报表时 若我们发现,内存溢出每次均出现在访问系统中某张报表时 (一般后台信息也有 体现),这时我们就需要拿这张报表看看了,主要查看报表设计是否合理、表达 式以及sql语句是否性能极其低下、报表计算是否非常复杂等。 若检查中发现如上问题,需要做如下一步或几步更改: A、 理顺报表设计逻辑,重新设计报表 B、 替换性能低下的表达式,如嵌套多层 if时可以使用case替代 C、 更改性能低下的sql语句 D、 报表中如果做了大量的统计、排名等,尽量将其整合到 sql中,即简化报表运算 E、 使用存储过程做数据集,并是使用 order by排序(与报表展现数据顺序相同) 3.2访问某个或某些大数据量报表时 若发现内存溢出均发生在访问某个或某些大数据量报表后出现 (可能需要查看后 台信息多次确认)。这种情况可以尝试如下解决办法 A、 增大jvm,即从内存支持上扩充。不同的应用服务器设置方法不同,但是一定要注意并不是 jvm设 置越大越好,一般不超过物理内存的 30% (建议)。 B、 配置reportConfig.xml文件。对于数据量大的情况,润乾提供了“数据量大的配置方案”详见《润 乾报表 在J2EE下的部署》。一般要减小 maxConcurrentForReport 和maxCellNum、增大 cachedReportTimeout 和 maxWaitTimeForReport 。 C、 增大物理内存。这个办法可以作为终极解决方案了。 3.3访问量增加到一定范围时 若访问量达到一定程度就出现内存溢出的情况,可以尝试如下解决办法 A、 增大JVM或物理内存 B、 增大数据库允许最大连接数 C、 增大应用服务器连接池最大连接数 D、 配置reportConfig.xml文件。对于访问量高的情况,润乾提供了“访问量高的配置方案”详见《润 乾报表 在J2EE下的部署》。一般要增大 maxConcurrentForReport 和maxCellNum、减小 cachedReportTimeout 和 maxWaitTimeForReport 。 另外,需要注意:配置数据库允许的最大连接数和应用服务器的连接池个数时, 必须大于报表的并发数+报表的等待数。 对于各种应用服务器下出现内存溢出的情况,我将在后续的总结中继续呈现,敬请期待。

文档评论(0)

dajiefude2 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档