【发布时间】:2015-02-02 18:56:43
【问题描述】:
我们使用 smooks 将 CSV 转换为 XML,然后将 XML 转换为 JSON。这是在 Wso2 esb 4.8.1 中使用以下组件按顺序完成的
- Smooks 调解器将 csv 转换为 xml
- 然后 json-eval 将 xml 转换为 json
我们在 csv 中有 100000 条记录,转换是使用迭代器在 50 个线程中并行完成的。
wso2 esb 服务器第一次启动时运行良好。然而,第二次运行,即在 5 分钟的休息时间。我们得到以下错误。
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Arrays.java:2694)
at java.lang.String.<init>(String.java:203)
at java.lang.StringBuffer.toString(StringBuffer.java:561)
at java.io.StringWriter.toString(StringWriter.java:210)
at org.apache.axiom.om.impl.llom.OMElementImpl.toString(OMElementImpl.java:996)
at org.apache.synapse.util.xpath.SynapseXPath.stringValueOf(SynapseXPath.java:321)
at org.apache.synapse.mediators.MediatorProperty.getEvaluatedExpression(MediatorProperty.java:138)
at org.apache.synapse.mediators.builtin.LogMediator.setCustomProperties(LogMediator.java:192)
at org.apache.synapse.mediators.builtin.LogMediator.getCustomLogMessage(LogMediator.java:131)
at org.apache.synapse.mediators.builtin.LogMediator.getLogMessage(LogMediator.java:117)
at org.apache.synapse.mediators.builtin.LogMediator.mediate(LogMediator.java:97)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:131)
at org.apache.synapse.mediators.MediatorWorker.run(MediatorWorker.java:69)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
我们遵循了 wso2 esb 4.8.1 的性能调整参数 感谢是否有人可以让我们知道调整 xpath 或 smooks 或任何其他参数/选项是否有帮助。
【问题讨论】:
-
仅从堆栈跟踪我们无法推断 xpath 是 OOM 的原因 - 内存可能由于其他原因而增长,并且更有可能在 xPath 评估期间发生 OOM。您应该分析 ESB 以找出所有内存的去向并考虑您的 JVM 内存设置,它是否足以满足您正在处理的负载?
标签: wso2esb