【问题标题】:BPEL, threads stucked on HashMap.getEntry?BPEL,线程卡在 HashMap.getEntry 上?
【发布时间】:2016-06-08 15:57:27
【问题描述】:

我是 SOA 新手,目前我们在使用 BPEL 进行一些 XML 转换时遇到了一个问题。 我们有 3 个 SOA 项目将执行以下操作:

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

SOA proejct1 执行步骤 1-2,project2 执行步骤 3,project3 执行步骤 4。

我们正在对输入的 7000 个文件进行负载测试。

我们遇到的问题是“Old Generation”的内存使用不断累积,虽然major GC可以减少它,它仍然不断增长,直到100%。然后无法创建新的 BEPL 实例,我们遇到了事务超时。

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

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

【问题讨论】:

    标签: xml-parsing garbage-collection soa bpel


    【解决方案1】:

    伙计们

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

    这是一个错误。你应该提出一个 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 中导致的性能问题

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多