持续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 []”由“”加载。
答案 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