问题说明: 我们在Web应用程序中面临以下问题(在CQ5上):
系统配置详情: •系统内存:7GB •Xmx:3.5 GB •Xms:1 GB •MaxPermGen:300MB •观察到的最大线程数:620(包括300个http请求服务线程) •Xss:默认
问题是cq5 java进程(运行servlet引擎)所消耗的内存会随着时间的推移而不断增加。 一旦达到6到6.5 GB以上(系统内存达到7 GB),JVM就会停止响应。 (由于内存不足和繁重的分页活动)。 然而,堆和permgen总体上保持在3.8(3.5 + 0.3)GB或以下。 这意味着非堆内存(本机内存+线程堆栈空间)从几百MB(CQ5服务器重启后)持续增长到超过2-3 GB(长时间运行4-5小时后负载很重)。 所以我们的目标基本上是找出非堆内存中的内存泄漏,这可能是由于第三方库,Java代码的间接引用等引入的。我们没有收到任何内存不足的错误。
需要帮助:
答案 0 :(得分:0)
这实际上取决于您的具体实施:您已部署的代码,您正在使用的基础架构,您正在运行的版本,您使用的应用程序服务器(如果有)重新使用,等等。
那就是说,我遇到了CQ5.5和Image Servlet的内存泄漏问题。它实际上是一个内存泄漏,其中一个Java库为Image Servlet提供支持。它由Java版本更新补救,但它是由Image servlet引起的。这是一个很长的镜头,这是你的问题,但可能值得一提。