转到kafka`producechannel()`填充并挂起

gpnt7bae  于 2021-06-07  发布在  Kafka
关注(0)|答案(0)|浏览(235)

我有一个服务器端应用程序编写的围棋生产Kafka事件。它完美地运行了几天,每秒产生约1.6k条消息,然后遇到一个偶发问题,所有Kafka消息发送都停止,需要手动重新启动服务器应用程序才能恢复Kafka消息的发送。
我已经包括了事件开始时度量图的截图。要解释我所看到的情况:
七天来,这个应用程序运行得非常完美。对于排队的每个消息,都会向发送一个传递事件通知 kafkaProducer.Events() . 您可以看到num queued=num delivered。
10:39:问题开始了。传递通知计数迅速降至零。Kafka消息不断排队,但是回调停止了。
10:52: kafkaProducer.ProduceChannel() 已满,并尝试将新消息排队进入go通道阻止goroutine。在这一点上,应用程序将永远不会再发送另一个Kafka消息,直到它被手动重新启动。
17:55:我手动重新启动了应用程序。kafka消息队列/传递继续。Kafka的尝试次数降为零。
我的围棋代码发送Kafka信息的唯一地方是:

recordChannelGauge.Inc()
    kafkaProducer.ProduceChannel() <- &msg
    recordChannelGauge.Dec()

在公制屏幕截图中,请注意 recordChannelGauge 通常保持为零,因为向Kafka发送消息 ProduceChannel() 不阻塞和每个 Inc() 紧接着是匹配的 Dec() 然而,当 ProduceChannel() 被填满了,goroutine街区和 recordChannelGauge 保持在1,并且在手动重新启动应用程序之前不会解除阻止。
仅供参考,我的环境详情:
golang 1.10.x构建的go服务器二进制文件
最新版本的 github.com/confluentinc/confluent-kafka-go/kafka . 这个库不使用版本,它使用的是最新的git commit,在本文撰写之时已经有2个月了,所以我确信我使用的是最新的版本。
服务器操作系统ubuntu 16.04.5
librdkafka1版本librdka0.11.6~1confluent5.0.1-
我怀疑这是由于ConfluentIncGo客户机中的一些内部问题造成的,它没有适当地处理某些错误场景。
另外,在出现问题时,我没有看到相关的日志输出。我确实看到零星的kafka代理在问题发生之前断开连接并在日志中出现超时错误,这似乎并不严重。这些日志消息每隔几小时左右发生一次,连续几天没有造成严重后果。

Nov 26 06:52:04 01 appserver.linux[6550]: %4|1543215124.447|REQTMOUT|rdkafka#producer-1| [thrd:kafka-broker-3:9092/bootstrap]: kafka-broker-3:9092/bootstrap: Timed out 0 in-flight, 1 retry-queued, 0 out-queue, 0 partially-sent requests
Nov 26 06:52:10 01 appserver.linux[6550]: %4|1543215130.448|REQTMOUT|rdkafka#producer-1| [thrd:kafka-broker-3:9092/bootstrap]: kafka-broker-3:9092/bootstrap: Timed out 0 in-flight, 1 retry-queued, 0 out-queue, 0 partially-sent requests
Nov 26 08:46:57 01 appserver.linux[6550]: 2018/11/26 08:46:57 Ignored event: kafka-broker-2:9092/bootstrap: Disconnected (after 600000ms in state UP)
Nov 26 08:47:02 01 appserver.linux[6550]: %4|1543222022.803|REQTMOUT|rdkafka#producer-1| [thrd:kafka-broker-2:9092/bootstrap]: kafka-broker-2:9092/bootstrap: Timed out 0 in-flight, 1 retry-queued, 0 out-queue, 0 partially-sent requests
Nov 26 08:47:09 01 appserver.linux[6550]: %4|1543222029.807|REQTMOUT|rdkafka#producer-1| [thrd:kafka-broker-2:9092/bootstrap]: kafka-broker-2:9092/bootstrap: Timed out 0 in-flight, 1 retry-queued, 0 out-queue, 0 partially-sent requests

放大到问题发生

缩小显示前后

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题