Camel cxf 2.20.0中的性能问题

时间:2018-07-09 16:53:47

标签: java apache-camel cxf

环境:骆驼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}}&amp;antInclude={{messages.log.filename}}*.log&amp;maxMessagesPerPoll={{messages.maxmessageperpoll}}&amp;sortBy={{messages.sort.by}}&amp;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>

0 个答案:

没有答案