wso2 axis2 OutOfMemory每天几次

时间:2016-02-12 12:09:50

标签: java wso2 axis2 wso2esb

持续OOM错误的可能原因是什么?

在我们的开发环境中,我们有3个节点,主节点上的VM初始化为:Xms = 3GB,Xmx = 3GB。此外,还定义了大约30个代理和30个端点。开发人员在白天不断重新加载碳,不断加载他们的更改(汽车文件)。它每天几次冻结。也许不断的配置改变会杀死碳?在预生产环境中,碳工作完美无缺:/

我做了堆转储,'泄漏可疑报告'的结果是:

  

加载了“org.apache.axis2.context.ConfigurationContext”的一个实例   “axis2”占661 590 744(79,50%)个字节。记忆是   累积在一个实例中   “java.util.concurrent.ConcurrentHashMap $ Segment []”由“”加载。

报告结果: Report

直方图: Histogram

2 个答案:

答案 0 :(得分:1)

根据堆转储,大多数保留堆都被ConfigurationContext实例占用。因此,由于开发系统中的配置负载很重,因此会出现此OOM问题。可能是由于许多开发人员经常部署的大型capps。由于该事件不会在您的作品中发生,因此该ESB永远不会进入OOM。

谢谢&问候, 拉温德拉。

答案 1 :(得分:0)

冻结主要是由于系统中发生了完整的gc循环,您可以更改gc设置以进行正确的gc配置

对于典型部署,wso2建议低于GC配置。 - Xms512m -Xmx2048m -XX:MaxPermSize = 1024m 由于您使用3GB内存,因此必须根据您的方案进行调整。有关部署的更多信息,请参阅https://docs.wso2.com/display/CLUSTER44x/Production+Deployment+Guidelines

由于你使用Xms = 3GB,Xmx = 3GB,它有可能等到整个3gb被填满然后再进行完整的gc循环。因此,最好将Xms值调整到大约1gb,这样就可以激发小gc周期并清理不必要的东西,而不是等待完整的gc