java - 微服务中 Kafka 生产者导致的大 GC 暂停
问题描述
我的一个 Web 服务为每个在线请求向 kafka(版本:0.10.2.1)发送日志消息(大小:10K),我发现 KafkaProducer 消耗大量内存,导致 gc 暂停时间过长。我的服务只有一个Kafka生产者,官方推荐的。
我只是想知道是否有人对如何在不影响在线服务的情况下向 kafka 发送消息有任何建议?
解决方案
听起来生产者无法跟上您的服务生成日志的速度。(这必然是推测,因为您提供了有关您的设置的最少细节)。
您是否对您的 kafka 集群进行了基准测试?它是否能够承受您产生的那种负载?
另一种方法是将您的 kafka 生产者与您的实际服务脱钩。由于您正在处理日志消息,因此您的应用程序可以简单地将日志写入磁盘,并且您可以有一个单独的进程读取这些日志文件并将它们发送到 kafka。这样消息的产生不会影响您的主要服务。
您甚至可以让 kafka 生产者完全在不同的 VM/Container 上运行,并通过 NFS 挂载之类的方式读取日志。
推荐阅读
- javascript - 在 typescript 中为泛型函数编写 JSdoc
- javascript - 如何使用 d3.js 将填充部分添加到 SVG 圆圈
- swift - Swift - scrollViewDidScroll 不能与 WKWebView 一起使用
- android - 如何修复 Android 中的 Kodein Force 关闭错误
- c++ - 我可以在不编写自定义特征类的情况下对类型进行模式匹配吗?
- python - 无法在 Flask 应用程序上保存和读取文件
- python - Python - 检查列表中的字符串/首字母是否存在于另一个列表中
- postgresql - 用于在 Google Cloud SQL 中查看数据的 GUI
- javascript - 在下拉框中按选定月份过滤表
- haskell - 不同种类的ReaderT?