kafka怎么查看消息堆积_Kafka 线上问题: 消息堆积一直不消费, 重启服务后开始消费...

消息堆积一直不消费,感觉消费者已经死掉一样。重启服务后开始消费,

但是消费一段时间又停止。

开始尝试增加消费者数量和增加 pod(节点)数,但是都不能完全解决,异常依然存在。

通过 dump 出堆栈信息发现消费则全部处在 WAITING 状态,这个状态是挂起状态,并且是无限期等待:"kafka-coordinator-heartbeat-thread | CID_alikafka_xxx" #125 daemon prio=5 os_prio=0 tid=0x00007f1aa57fa000 nid=0x86 in Object.wait() [0x00007f1a8af80000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

at java.lang.Object.wait(Object.java:502)

at org.apache.kafka.clients.consumer.internals.AbstractCoordinator$HeartbeatThread.run(AbstractCoordinator.java:920)

- locked <0x00000000e798f558> (a org.apache.kafka.clients.consumer.internals.ConsumerCoordinator)

Locked ownable synchronizers:

- None

"kafka-coordinator-heartbeat-thread | CID_alikafka_xxx" #124 daemon prio=5 os_prio=0 tid=0x00007f1aa546b800 nid=0x85 in Object.wait() [0x00007f1a8b081000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

at java.lang.Object.wait(Object.java:502)

at org.apache.kafka.clients.consumer.internals.AbstractCoordinator$HeartbeatThread.run(AbstractCoordinator.java:920)

- locked <0x00000000e798f888> (a org.apache.kafka.clients.consumer.internals.ConsumerCoordinator)

Locked ownable synchronizers:

- None

后来经过查看官方文档发现一句话:

https://docs.spring.io/spring-kafka/docs/2.6.3-SNAPSHOT/reference/html/

You should understand that the retry discussed in thepreceding sectionsuspends the consumer thread (if aBackOffPolicyis used). There are no calls toConsumer.poll()during the retries. Kafka has two properties to determine consumer health. Thesession.timeout.msis used to determine if the consumer is active. Sincekafka-clientsversion0.10.1.0, heartbeats are sent on a background thread, so a slow consumer no longer affects that.max.poll.interval.ms(default: five minutes) is used to determine if a consumer appears to be hung (taking too long to process records from the last poll). If the time betweenpoll()calls exceeds this, the broker revokes the assigned partitions and performs a rebalance. For lengthy retry sequences, with back off, this can easily happen.

消费者被挂起了,因为超过了 max.poll.interval.ms 默认五分钟,其实罪魁祸首还是拿到消息后业务处理太慢了,这块后续优化掉。

后面加大 spring.kafka.properties.max.poll.interval.ms 到 600000 (10分钟)解决。spring.kafka.producer.batch-size 150 一次性拉取消息数

spring.kafka.properties.max.poll.interval.ms 两次poll的间隔默认5分钟

spring.kafka.producer.batch-size 一次性提交大小(默认16384字节)针对消息生产者

spring.kafka.listener.concurrency 消费者数量,平均分配kafka的partition,如24个partition,此值为8,则每个消费者负责3个partition。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]和引用\[2\]的内容,你遇到的错误"./bin/kafka_bridge_run.sh: Permission denied"是因为没有执行脚本的权限。这个错误通常发生在运行Kafka Bridge时,脚本没有被正确授权。 要解决这个问题,你可以尝试以下几个步骤: 1. 确保你已经在正确的目录下执行了脚本。在引用\[1\]中提到的命令中,你需要进入到Kafka容器中才能执行这些命令。 2. 检查脚本的权限。你可以使用"ls -l"命令来查看脚本的权限设置。确保脚本具有可执行权限。如果没有,你可以使用"chmod +x"命令来添加执行权限。 3. 确保你以root用户或具有足够权限的用户身份运行脚本。有时候,权限问题可能是由于当前用户没有足够的权限来执行脚本而导致的。 如果你仍然遇到权限问题,你可以尝试使用sudo命令来以管理员身份运行脚本,例如"sudo ./bin/kafka_bridge_run.sh"。 希望这些步骤能够帮助你解决问题。如果问题仍然存在,请提供更多的详细信息,以便我能够更好地帮助你。 #### 引用[.reference_title] - *1* *2* [docker安装kafka](https://blog.csdn.net/qq_45825760/article/details/128242538)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值