环境:骆驼2.20.0
Java 1.8
命中率:150次/秒
我们正尝试将Camel版本升级到2.20.0,但我们会遇到骆驼-cxf 2.19.5和2.20.0之间的麻烦和内存泄漏。
我们有一个骆驼路线(公开CXF端点),通过log4j将有效负载写入文件,并每隔15s将其移动到另一个文件夹中。
第二条骆驼路线从另一个文件夹读取文件并分割(并执行一些处理器)。
在我们的测试中,拆分仅记录了消息“ ****** FOO BAR ****”。
由于cxf库的升级,我们的服务器崩溃了,导致内存不足,并且垃圾收集器的效率不如2.19.5版本。
两个版本之间是否有任何变化? 是否需要更改任何配置以保持服务器稳定?
我们可以在VisualVM中看到这些麻烦(在2.20.0中),即内存图增加直到最大内存和崩溃。
谢谢。
暴露CXF的第一条路线
<cxf:cxfEndpoint id="frontalSupervision" address="/supervision" endpointName="s:supervisionSOAP" serviceName="s:supervision"
wsdlURL="wsdl/supervision.wsdl" xmlns:s="http://*****/supervision/">
<cxf:properties>
<entry key="dataFormat" value="PAYLOAD" />
<entry key="receiveTimeout" value="${ws.cxf.receiveTimeout}"/>
</cxf:properties>
<cxf:inInterceptors>
<ref bean="supervision-authentication" />
</cxf:inInterceptors>
</cxf:cxfEndpoint>
<routeContext id="webservice-to-log4j2-route-context" xmlns="http://camel.apache.org/schema/spring">
<route id="webservice-to-log4j2-route">
<from uri="cxf:bean:frontalSupervision" />
<!-- permet de logger le contenu de la requete -->
<to uri="log:body?level=DEBUG" />
<process ref="log4j2LoggerProcessor" />
</route>
</routeContext>
- 第二条路线:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<routeContext id="log4j2-to-bdd-route-context" xmlns="http://camel.apache.org/schema/spring">
<route id="log4j2-to-bdd-route">
<from
uri="file:///{{messages.log.directory}}/{{messages.log.rolling.relative.directory}}?delete={{messages.files.delete}}&antInclude={{messages.log.filename}}*.log&maxMessagesPerPoll={{messages.maxmessageperpoll}}&sortBy={{messages.sort.by}}&delay={{messages.delay}}" />
<split streaming="true" parallelProcessing="true"
executorServiceRef="splitExecutor">
<tokenize token="{{messages.xmltype.name}}" xml="true" regex="true"/>
<log message="******* FOO BAR *****" />
</split>
</route>
</routeContext>
</beans>