4.2 有没有办法通过什么手段快速发现死循环?一般来说,死循环的线程会导致CPU飙高、OOM等现象,在本次故障中,并没有相关异常表现,所以并没有联系到死循环的问题 。
那通过这次故障后,对kafka相关机制有了更深刻了解,poll间隔超时很有可能就是消费阻塞甚至死循环导致 。
所以,如果下次出现类似问题,消费者停止消费,但是kafkaListener线程还在,可以直接通过arthas的 thread id 命令查看对应线程的调用栈,看看是否有异常方法死循环调用 。
5、最佳实践通过此次故障,我们也可以总结几点kafka使用的最佳实践:
- 使用消息队列进行消费时,一定需要多考虑异常情况,包括幂等、耗时处理(甚至死循环)的情况 。
- 尽量提高客户端的消费速度,消费逻辑另起线程进行处理,并最好做超时控制 。
- 减少Group订阅Topic的数量,一个Group订阅的Topic最好不要超过5个,建议一个Group只订阅一个Topic 。
- 参考以下说明调整参数值:max.poll.records:降低该参数值,建议远远小于<单个线程每秒消费的条数> * <消费线程的个数> * <max.poll.interval.ms>的积 。max.poll.interval.ms: 该值要大于<max.poll.records> / (<单个线程每秒消费的条数> * <消费线程的个数>)的值 。
都看到最后了,原创不易,点个关注,点个赞吧~
文章持续更新,可以微信搜索「阿丸笔记 」第一时间阅读,回复【笔记】获取Canal、MySQL、HBase、JAVA实战笔记,回复【资料】获取一线大厂面试资料 。
知识碎片重新梳理,构建Java知识图谱:github.com/saigu/JavaK…(历史文章查阅非常方便)【线上kafka消息堆积,consumer掉线,怎么办?】
经验总结扩展阅读
- 天玑2000最新消息_天玑2000曝光
- 三星S22Ultra最新消息_三星S22Ultra手机曝光
- 图文全面详解 Kafka 架构和原理机制
- 2023各地高考放榜时间是什么时候最新消息
- 2023年平安夜婚姻运直线上升的星座拥有幸福婚姻生活
- 英雄联盟如何在游戏里回复好友(lol快速回复别人消息)
- 供销社恢复和重建是好消息吗 供销社是要重新启用吗
- LOL游戏里面怎么回复好友消息(lol游戏内怎么给好友回消息)
- 10 LOL如何在游戏中回复好友消息(lol怎么在游戏里给好友回消息)
- 英雄联盟在游戏过程中如何回复好友消息(英雄联盟对局中怎么回复好友消息)
