当前位置: 首页 > 知识库问答 >
问题:

Apache Camel内存泄漏与Kafka Producer

房泉
2023-03-14

我正在使用Apache Camel 2.20.2(以及Spring Boot 1.5.8)将通过MQTT传入的消息路由到另外两个服务,一个是HTTP/SOAP(works ok),另一个是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集群,所以不知道为什么内存没有被释放?

共有1个答案

彭星津
2023-03-14

经过进一步的调查,看起来骆驼使用了你给它的尽可能多的内存,一旦GC运行,一切看起来都很好。我现在正在运行这个应用程序,没有对docker容器进行任何重大更改,也没有任何内存相关的问题。

 类似资料:
  • 一、内存溢出 一种程序运行出现的错误。 当程序运行需要的内存超过了剩余的内存时, 就出抛出内存溢出的错误。 二、内存泄漏 占用的内存没有及时释放。 内存泄露积累多了就容易导致内存溢出。 常见的内存泄露: 意外的全局变量。 没有及时清理的计时器或回调函数。 闭包 // 1. 内存溢出 var obj = {} for (var i = 0; i < 10000; i++) { obj[i] =

  • 问题内容: 我认为我的android应用正在泄漏内存。我不是绝对确定这是问题所在。 应用程序打开时经常崩溃,并且logcat尝试加载位图图像时会显示“内存不足”异常。 崩溃后,我重新打开了该应用程序,它运行正常。Logcat会显示许多“ gc”,并且JIT表会不时地向上调整大小,而不会向下调整,直到应用程序因内存不足错误而崩溃。 这听起来像是内存泄漏吗?如果是这样,我该如何定位和关闭泄漏点。 这是

  • 问题内容: 我一直在追寻内存泄漏(由“ valgrind –leak-check = yes”报告),它似乎来自ALSA。这段代码已经存在于自由世界中一段时间​​了,所以我猜这是我做错的事情。 输出看起来像这样: 并继续一些页面 这是由于我在一个项目中使用ALSA并开始看到这种巨大的泄漏……或者至少是所说泄漏的报告。 所以问题是:是我,ALSA或valgrind在这里遇到问题吗? 问题答案: ht

  • 问题内容: 我有一个长时间运行的脚本,如果让脚本运行足够长的时间,它将消耗系统上的所有内存。 在不详细介绍脚本的情况下,我有两个问题: 是否有可遵循的“最佳实践”,以防止泄漏发生? 有什么技术可以调试Python中的内存泄漏? 问题答案: 看看这篇文章:跟踪python内存泄漏 另外,请注意,垃圾收集模块实际上可以设置调试标志。看一下功能。此外,请查看Gnibbler的这段代码,以确定调用后已创建

  • 本文向大家介绍Java 内存泄漏,包括了Java 内存泄漏的使用技巧和注意事项,需要的朋友参考一下 在Java中,垃圾回收(析构函数的工作)是使用垃圾回收自动完成的。但是,如果代码中有引用它们的对象怎么办?它无法取消分配,即无法清除其内存。如果这种情况一再发生,并且创建或引用的对象根本没有被使用,它们就会变得无用。这就是所谓的内存泄漏。 如果超过了内存限制,则程序将通过抛出错误(即“ OutOfM

  • 问题内容: 我使用Informix遇到了一个奇怪的问题(具体来说,我使用的是IBM.Data.Informix命名空间,即4.10 Client SDK)。我正在使用ODBC连接到IBM Informix数据库,并且遇到内存泄漏问题。该文档相当稀疏,并且我只能使用当前安装的驱动程序/ SDK。这是我用于数据库上下文的代码: } 我已尝试处置并关闭所有可以的连接,但这似乎无济于事。我是否缺少某些东西