【问题标题】:Big GC pause caused by Kafka producer in microservice微服务中 Kafka 生产者导致的大 GC 暂停
【发布时间】:2019-11-14 13:41:11
【问题描述】:

我的一个 Web 服务为每个在线请求向 kafka(版本:0.10.2.1)发送日志消息(大小:10K),我发现 KafkaProducer 消耗大量内存,导致 gc 暂停时间过长。 我的服务只有一个Kafka生产者,官方推荐的。

我只是想知道是否有人对如何在不影响在线服务的情况下向 kafka 发送消息有任何建议?

【问题讨论】:

  • 什么 java 版本,什么内存设置,日志在哪里,你用过什么 GC,你是如何知道暂停的?

标签: java performance apache-kafka garbage-collection kafka-producer-api


【解决方案1】:

听起来生产者无法跟上您的服务生成日志的速度。 (这必然是推测,因为您提供的设置细节很少)。

您是否对自己的 kafka 集群进行了基准测试?它能够承受您产生的那种负载吗?

另一种方法是将您的 kafka 生产者与您的实际服务脱钩。由于您正在处理日志消息,因此您的应用程序可以简单地将日志写入磁盘,并且您可以有一个单独的进程读取这些日志文件并将它们发送到 kafka。这样消息的产生不会影响您的主要服务。

您甚至可以让 kafka 生产者完全在不同的 VM/Container 上运行,并通过 NFS 挂载之类的方式读取日志。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    • 2016-10-02
    • 1970-01-01
    相关资源
    最近更新 更多