我的一个Web服务针对每个在线请求将日志消息(大小:10K)发送到kafka(版本:0.10.2.1),并且我发现KafkaProducer占用大量内存,导致gc暂停时间长。 我的服务中只有一个Kafka生产商,这是官方推荐的。
我只是想知道是否有人对如何在不影响在线服务的情况下向kafka发送消息有任何建议?
答案 0 :(得分:0)
类似生产者的声音无法跟上您的服务生成日志的速度。 (这肯定是推测,因为您只提供了有关设置的最少详细信息。)
您是否对kafka集群进行了基准测试?它能够承受您产生的那种负载吗?
另一种方法是使您的卡夫卡生产者与实际服务脱钩。由于您正在处理日志消息,因此您的应用程序可以将日志简单地写入磁盘,并且可以有一个单独的过程来读取这些日志文件并将其发送到kafka。这样,消息的产生不会影响您的主要服务。
您甚至可以让kafka生产者完全在另一个VM /容器上运行,并通过类似NFS挂载的方式读取日志。