记录一次线上因kafka宕机而导致java服务cpu飙升的情况

问题背景

线上kafka(自搭)所在服务器,因为防火墙问题,导致线上服务无法连接,从而开始持续重试。

发消息为异步发送,且线上业务服务qps为4000

定位问题:问题定位较为简单,查看日志(本地模拟日志)

复制代码
2025-01-04T14:41:25,577 INFO  [kafka-producer-network-thread | producer-1] org.apache.kafka.clients.NetworkClient: [Producer clientId=producer-1] Disconnecting from node -1 due to socket connection setup timeout. The timeout value is 8073 ms.
2025-01-04T14:41:25,578 WARN  [kafka-producer-network-thread | producer-1] org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater: [Producer clientId=producer-1] Bootstrap broker 192.168.8.16:9092 (id: -1 rack: null) disconnected
2025-01-04T14:41:46,696 INFO  [kafka-producer-network-thread | producer-1] org.apache.kafka.clients.NetworkClient: [Producer clientId=producer-1] Node -1 disconnected.
2025-01-04T14:41:46,696 WARN  [kafka-producer-network-thread | producer-1] org.apache.kafka.clients.NetworkClient: [Producer clientId=producer-1] Connection to node -1 (/192.168.8.16:9092) could not be established. Broker may not be available.

通过日志发现是kafka连接错误,且持续的重连

解决问题:解决也很简单,网络互通后,问题解决。


引发思考,为什么会导致服务器CPU飙升?

spring kafka producer的失败重试

spring kafka的失败重试为默认无限重试,每次请求都会发送消息进行kafka的重连尝试,从而最终导致jvm cpu飙升,服务请求拒绝

相关推荐
hunter19901016 分钟前
Spring线程池ThreadPoolTaskExecutor配置与实践
java·后端·spring
5008425 分钟前
鸿蒙 Flutter 分布式硬件调用:跨设备摄像头 / 麦克风共享
分布式·flutter·华为·electron·wpf·开源鸿蒙
皇族崛起27 分钟前
【docker安装部署】- 一个可用的Docker 镜像配置 和 DNS配置
java·docker·容器
互亿无线明明33 分钟前
国际短信通知服务:如何为全球业务构建稳定的跨国消息触达体系?
java·c语言·python·php·objective-c·ruby·composer
深盾科技33 分钟前
Linux跨进程内存操作的3种方法及防护方案
java·linux·网络
Jerry9527062838 分钟前
1.什么式可用性
java·分布式·后端·架构·高可用·秒杀
轻描淡写60638 分钟前
二进制存储数据
java·开发语言·算法
君爱学习1 小时前
JVM对象分配内存如何保证线程安全?
java
一点晖光1 小时前
Docker 中 Crontab 不执行的原因与解决方案
java·docker·定时任务
BD_Marathon1 小时前
【JavaWeb】Tomcat_部署项目方式
java·tomcat