故障:Kafka异步发送致使所有相关线程阻塞

当使用Kafka异步producer.send()时,出现ProducerSendThread线程死亡导致所有调用线程阻塞的问题。原因是消息队列积压达到上限,queue.buffering.max.messages设置为10000。临时解决方案是设置queue.enqueue.timeout.ms避免阻塞,但可能导致消息丢失。故障引发对后台线程数量和稳定性问题的思考。
摘要由CSDN通过智能技术生成

这个故障在我们前段时间线上服务碰到过,具体的问题描述跟KAFKA-1415里提及的完全一样。

简单概括就是,正常情况下,使用kafka异步producer.send()发送消息时,会在后台创建一个守护线程,通过jstack查看jvm线程堆栈信息会找到这个线程,默认名称:ProducerSendThread-。ProducerSendThread驻留在后台,负责将待发送的消息批量往kafka topic转移。

"ProducerSendThread-" prio=10 tid=0x00007f6b3c01c800 nid=0x40fa waiting on condition [0x00007f6b90510000]   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00007f6bc6d53cd8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
        at java.util.concurrent.locks.Abstr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值