Jakarta ee J2EE Struts应用程序中意外的堆使用

Jakarta ee J2EE Struts应用程序中意外的堆使用,jakarta-ee,weblogic,memory-management,daemon,Jakarta Ee,Weblogic,Memory Management,Daemon,我对我的应用程序中的堆使用情况几乎没有疑问。在一些实例中,可以观察到用户在周末的活动是最小的(或零),但是堆使用率线性增加,达到了导致GC启动的阈值。我希望分析此堆使用的原因,并确认这是否正常和预期。假设没有用户活动,此堆使用可能是由守护进程(如我的应用程序的守护进程或Weblogic线程)引起的。我如何确认是哪个守护进程导致了此行为,以及是否需要执行任何操作来解决此问题 我已经对我的应用程序的守护进程进行了大量测试,并且相当有信心它不会误用堆。 但是我可以用Weblogic的守护进程做什么呢?

我对我的应用程序中的堆使用情况几乎没有疑问。在一些实例中,可以观察到用户在周末的活动是最小的(或零),但是堆使用率线性增加,达到了导致GC启动的阈值。我希望分析此堆使用的原因,并确认这是否正常和预期。假设没有用户活动,此堆使用可能是由守护进程(如我的应用程序的守护进程或Weblogic线程)引起的。我如何确认是哪个守护进程导致了此行为,以及是否需要执行任何操作来解决此问题

我已经对我的应用程序的守护进程进行了大量测试,并且相当有信心它不会误用堆。 但是我可以用Weblogic的守护进程做什么呢?我应该接受它还是与它搏斗


编辑:我正在使用BEA JRockit 1.6运行Weblogic 10.3。在运行垃圾收集器之前的大约20小时内,可以观察到堆使用率的线性增加。我已经用JProbe测试了我的应用程序的进程,没有发现任何漏洞。

我一定会设法找出问题所在(可能在你的代码中,而不是在WebLogic中)。问题是,您没有提供关于您的环境(例如WLS版本、Java版本、平台)或您的问题(例如,到GC需要多长时间)的详细信息,因此提供指导有点困难,但是

如果这是一个选项,我会使用VisualVM(或您选择的分析器)。如果可能,尝试在本地环境中重现问题,这样会更容易。如果没有,以下是JMX URL:

service:jmx:iiop:///jndi/iiop://host:port/weblogic.management.mbeanservers.runtime
只需确保启用匿名管理员查找:转到域>安全>常规并选中启用匿名管理员查找复选框)

还要确保为管理服务器和应用程序服务器启用IIOP协议:转到服务器>协议,并选中IIOP复选框)。还要确保

另一种选择是获取一些堆转储,并使用EclipseMat之类的工具对其进行分析


更新:由于GC之前大约需要20个小时,因此我会安排一项任务来生成一些堆转储(例如,每小时一个),并对它们进行分析,以找出随着时间的推移哪些对象消耗内存。这可能会给出一个关于罪魁祸首进程的提示。

我肯定会尝试查找问题(这可能在您的代码中,而不是在WebLogic中)。问题是,您没有提供关于您的环境(例如WLS版本、Java版本、平台)或您的问题(例如,到GC需要多长时间)的详细信息,因此提供指导有点困难,但是

如果这是一个选项,我会使用VisualVM(或您选择的分析器)。如果可能,尝试在本地环境中重现问题,这样会更容易。如果没有,以下是JMX URL:

service:jmx:iiop:///jndi/iiop://host:port/weblogic.management.mbeanservers.runtime
只需确保启用匿名管理员查找:转到域>安全>常规并选中启用匿名管理员查找复选框)

还要确保为管理服务器和应用程序服务器启用IIOP协议:转到服务器>协议,并选中IIOP复选框)。还要确保

另一种选择是获取一些堆转储,并使用EclipseMat之类的工具对其进行分析


更新:由于GC之前大约需要20个小时,因此我会安排一项任务来生成一些堆转储(例如,每小时一个),并对它们进行分析,以找出随着时间的推移哪些对象消耗内存。这可能会给出有关罪魁祸首进程的提示。

似乎是J2EE服务器的正常行为。即使你的应用程序上没有任何负载,服务器上也会有一些活动(看家、监控等)不断创建对象。即使您正在进行的分析堆使用情况的活动也会创建对象

我认为对象创建的速度非常低,因为填充堆和启动GC周期需要20个小时。关于您的担忧的更多细节可能会有所帮助

i、 e。 -您是否正在摆脱记忆错误
-JVM启动参数是什么?(堆大小、垃圾收集器类型等)

似乎是J2EE服务器的正常行为。即使你的应用程序上没有任何负载,服务器上也会有一些活动(看家、监控等)不断创建对象。即使您正在进行的分析堆使用情况的活动也会创建对象

我认为对象创建的速度非常低,因为填充堆和启动GC周期需要20个小时。关于您的担忧的更多细节可能会有所帮助

i、 e。 -您是否正在摆脱记忆错误
-JVM启动参数是什么?(堆大小、垃圾收集器类型等)

查看方框上的prstat,查看周末运行的任何其他作业。cron/backup作业等运行并命中您的服务器是很常见的,团队已经解释了为什么要首先设置这些作业。

请查看方框上的prstat,了解周末运行的任何其他作业。cron/backup作业等运行并命中您的服务器是很常见的,团队已经解释了为什么首先要设置这些作业。

感谢您的输入,我在问题中添加了更多细节。感谢您的输入,我在问题中添加了更多细节。