java - Java Nio 上的 Kafka 消费者心跳线程块
问题描述
使用的软件库版本:Spring 2.2.3.Release、Spring kafka 2.x、Kafka-Client 2.0.0 Java 版本:OpenJdk 1.8 平台 Kafka 版本:Apache kafka 2.2.0 ( https://docs.confluent.io /5.2.1/release-notes.html#apache-kafka-2-2-0-cp2 )
配置:主题有 6 个分区。数据速率:传入数据速率为 3-4 msgs/秒。
场景:使用上述配置,测试连续运行 3 天。2.5天后,我在我们的消费者组中遇到了没有收到来自主题的消息的问题。经过详细调查,我发现消费者线程被阻塞了,正好有18个线程处于阻塞状态。此外,线程图表明消费者线程正在等待“Java.nio”。
PFA 日志和屏幕截图。a.) 日志 b.) 截图
a) 日志
"kafka-coordinator-heartbeat-thread | release-registry-group" #128 daemon prio=5 os_prio=0 tid=0x00007f1954001800 nid=0x8a waiting for monitor entry [0x00007f197f7f6000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.apache.kafka.clients.consumer.internals.AbstractCoordinator$HeartbeatThread.run(AbstractCoordinator.java:1005)
- waiting to lock <0x00000000c3382070> (a org.apache.kafka.clients.consumer.internals.ConsumerCoordinator)
"org.springframework.kafka.KafkaListenerEndpointContainer#1-2-C-1" #127 prio=5 os_prio=0 tid=0x00007f1b6dbc1800 nid=0x89 runnable [0x00007f197f8f6000]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
- locked <0x00000000c33822d8> (a sun.nio.ch.Util$3)
- locked <0x00000000c33822c8> (a java.util.Collections$UnmodifiableSet)
- locked <0x00000000c33822e8> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
at org.apache.kafka.common.network.Selector.select(Selector.java:689)
at org.apache.kafka.common.network.Selector.poll(Selector.java:409)
at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:510)
at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:271)
at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:242)
at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:218)
at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureCoordinatorReady(AbstractCoordinator.java:230)
- locked <0x00000000c3382070> (a org.apache.kafka.clients.consumer.internals.ConsumerCoordinator)
at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:314)
at org.apache.kafka.clients.consumer.KafkaConsumer.updateAssignmentMetadataIfNeeded(KafkaConsumer.java:1218)
at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1175)
at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1154)
at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.pollAndInvoke(KafkaMessageListenerContainer.java:732)
at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:689)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.lang.Thread.run(Thread.java:748)
我想了解根本原因和可能的解决方案来解决它,并提前致谢。
解决方案
推荐阅读
- c - 处理大文件时多线程程序崩溃
- select - 输入对话框“选择”不起作用 - Sikuli IDE 2.0.3
- c# - How to either uncomment or add a line to an XML/ config file?
- html - 为什么 ngb-bootstrap Collapse control 的切换折叠按钮会折叠整个动态生成的卡片集?
- scala - Type mismatch creating Scala Array/Seq of Generic type
- php - laravel BelongsToMany 分页
- sql - 如何将多行汇总成单行和单列
- c# - 'SQLite Error 1: 'near "(": syntax error'.' with cross apply in query?
- flutter - 如何在父窗口小部件的回调函数中使用 Navigator.of(context)?
- excel - Multiple criteria formula should be returning multiple matches. But is only returning the first match