BPEL,线程停留在HashMap.getEntry上?

时间:2016-06-08 15:57:28

标签: xml-parsing garbage-collection soa bpel

我是SOA的新手,目前我们在使用BPEL进行XML转换时遇到了一个问题。 我们有3个SOA项目会做类似的事情:

  1. 从文件夹中读取输入文件
  2. 将文件内容保存在数据库中并放入AQ
  3. 从AQ读取文件ID,从数据库加载内容,并转换为我们的内部XML格式
  4. 应用一些业务逻辑并将内容转换回文本格式。
  5. SOA proejct1执行步骤1-2,project2执行步骤3,将project3执行到步骤4。

    我们正在使用输入7000文件进行一些负载测试。

    我们遇到的问题是" Old Generation"继续积累,虽然主要GC可以减少它,它仍然保持增长,直到100%。然后,不能创建新的BEPL实例,并且我们遇到了事务超时。

    分析堆转储后,我们得到如下结果,似乎BPELFactoryImpl持有超过180M的HashMap,并且它将继续增长。所以有人经历过类似的事情吗?

    我们使用SOA版本12.1.3。这个问题让我们停了好几个星期,请帮忙,非常感谢。 Image of heap analysis

1 个答案:

答案 0 :(得分:0)

专家

最后我们得到了一个答案,它是由一个错误引起的,正如Oracle Support所说,我们正在等待补丁。 谢谢你的关注。

这是一个错误。你应该提出一个SR引用:卡在线上

    at java.util.HashMap.getEntry(HashMap.java:465)
 at java.util.HashMap.get(HashMap.java:417)
 at oracle.xml.parser.v2.XMLNode.setUserData(XMLNode.java:2137)
 at oracle.bpel.lang.v20.model.impl.ExtensibleElementImpl.doCreateElement(ExtensibleElementImpl.java:502)
 at oracle.dp.entity.impl.EmFacadeObjectImpl.getElement(EmFacadeObjectImpl.java:35)
 at oracle.bpel.lang.v20.model.impl.ExtensibleElementImpl.performDOMChange(ExtensibleElementImpl.java:707)
 at oracle.bpel.lang.v20.model.impl.ExtensibleElementImpl.doOnChange(ExtensibleElementImpl.java:636)
 at oracle.bpel.lang.v20.model.impl.ExtensibleElementImpl$DOMUpdater.notifyChanged(ExtensibleElementImpl.java:535)
 at oracle.dp.notify.impl.NotifierImpl.emNotify(NotifierImpl.java:39)
 at oracle.dp.entity.impl.EmHolderImpl.doNotifyOnSet(EmHolderImpl.java:53)
 at oracle.dp.entity.impl.EmHolderImpl.set(EmHolderImpl.java:47)
 at oracle.bpel.lang.v20.model.impl.CopyImpl.setTo(CopyImpl.java:115)
 at com.collaxa.cube.engine.ext.bpel.v2.wmp.BPEL2xCallWMP$CallArgument$1.evaluate(BPEL2xCallWMP.java:190)
 at com.collaxa.cube.engine.ext.bpel.v2.wmp.BPEL2xCallWMP.invokeMethod(BPEL2xCallWMP.java:103)
 at com.collaxa.cube.engine.ext.bpel.v2.wmp.BPEL2xCallWMP.__executeStatements(BPEL2xCallWMP.java:62)
 at com.collaxa.cube.engine.ext.bpel.common.wmp.BaseBPELActivityWMP.perform(BaseBPELActivityWMP.java:188)
 at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:2880)
 ....

错误20857627(20867804):由于大量线程卡在HashMap.get中而导致性能问题