繁体   English   中英

Kafka Producer的Apache Camel内存泄漏

[英]Apache Camel Memory Leak with Kafka Producer

我正在使用Apache Camel 2.20.2(与Spring Boot 1.5.8一起)将通过MQTT传入的消息路由到另外两个服务,一个是HTTP / SOAP(可以正常运行),另一个是Apache Kafka。

在以大约每分钟320条消息的速度运行一整夜之后,我注意到该过程变得非常缓慢。 经过一些分析后,我发现Kafka路由会产生内存泄漏(请确保禁用HTTP路由)。

@Component
public class Router extends RouteBuilder {

    @Autowired
    ApplicationProperties param;

    @Override
    public void configure() throws Exception {
        logger.info("Starting MqttKafkaBridgeApplication with:\n" + param.toString());

        // MQTT Consumer
        from("mqtt:vernemq?"
                + "host=tcp:MqttHost:MqttPort...")
        .transform(body().convertToString())
        .log("Recieved : "+body().convertToString())
        .multicast()
        .stopOnException().to( "direct:kafka");

        // Kafka Producer
        from("direct:kafka")
            .process(new Processor() {
                @Override
                public void process(Exchange exchange) throws Exception {
                    exchange.getIn().setHeader(KafkaConstants.PARTITION_KEY, 0);
                    exchange.getIn().setHeader(KafkaConstants.KEY, "1");
                }
            })
            .to("kafka:" +  "kafkaTopic"  +
                "?brokers=kafkaHost:KafkaPort;
    }
}

我是Camel的新手,但据我所知,我的配置非常简单? 我可以看到消息到达Kafka群集,所以不知道为什么不释放内存?

visualvm的屏幕截图,可以看到字节数,并且char数组随每条消息而增长: 在此处输入图片说明

经过进一步研究,看起来只要CGC运行一切正常,Camel就会使用您提供的内存。 我现在正在运行该应用程序,而在Docker容器中没有任何重大更改,并且没有任何与内存相关的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM