kafka的lag问题

  其他常见问题
内容纲要

概要描述


当kafka消费者不足以消费生产者产生的消息时,会出现消息积压(lag)的情况。本文主要介绍如何在kafka端提高消费能力

详细说明


假设有一个topic为nams_flume_imp,有两个消费者组 -imp-adv-log 和 _logstash_imp来消费该topic,每个消费者组目前只有一个消费者,每个消费者只有一个线程。
Kafka有6个partition,也就是说每个消费者组只有一个消费者线程来消费6个partition的log数据。
可以通过kafka manager或者命令

查看到*_logstash_imp组的消费能力比较可观,没有消费延迟:
file

通过命令查看
查看topic属于哪个消费者组:
kafka-consumer-group.sh 脚本路径:/root/TDH-Client/kafka/bin
./kafka-consumer-groups.sh --zookeeper 172.22.39.7:2181 --group console-consumer-24314 --describe
file

查看该消费者组的lag情况:
./kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zookeeper 172.22.39.7:2181 --group console-consumer-24314
file

而*-imp-adv-log的消费能力差一些。0,1,2三个partition存在较大的lag(延迟)
file

通过观察 Consumer Instance Owner或者命令行观察owner,发现两个消费者组都只有一个消费者实例。因此推测是由于消费者实例太少导致的消费能力不足,因此我们要增加消费者实例,我们把消费者实例提升为6个,这样可以保证对同一个consumer group而言,每个partition都有一个consumer来消费。具体增加消费者的方法可以参考文档:
增加消费者

增加线程数的方法:
提高num.network.threads和num.io.threads参数的值,值需要根据服务器性能决定

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。