栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MQTT工况上报后数据订阅存在kafka消息积以及cpu100%问题排查总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MQTT工况上报后数据订阅存在kafka消息积以及cpu100%问题排查总结

问题:预发环境整体运行3天后存在kafka消息积压和微服务CPU使用率接近100%问题

一、Kafka消息滞后排查 1.1、什么是kafka消息滞后

kafka消息滞后程度:指消费者当前落后于生产者的程度。

Kafka 的消息是有留存时间设置的,默认是 1 周(Kafka 默认删除 1 周前的数据)。消费者程序足够慢,慢到它要消费的数据快被 Kafka 删除了。

这可能产生两个后果:

(1)一个是消费者从头消费一遍数据;

(2)另一个是消费者从最新的消息位移处开始消费,之前没来得及消费的消息全部被跳过了,从而造成消息丢失的假象。

1.2、Lag指标监测

Log指标直接反映了一个消费者的运行情况。一个正常工作的消费者,它的 Lag 值应该很小,甚至是接近于 0 的,这表示该消费者能够及时地消费生产者生产出来的消息,滞后程度很小。

如果一个消费者 Lag 值很大,通常就表明它无法跟上生产者的速度,最终 Lag 会越来越大,从而拖慢下游消息的处理速度。

Lag 的单位是消息数,监控 Lag 的层级是在分区上的。如果要计算主题级别的,你需要手动汇总所有主题分区的 Lag,将它们累加起来,合并成最终的 Lag 值。

消费进度监控3 种方法:

(1)使用 Kafka 自带的命令行工具 kafka-consumer-groups 脚本。

Kafka 自带的命令行工具 bin/kafka-consumer-groups.sh

 
$ bin/kafka-consumer-groups.sh --bootstrap-server  --describe --group 

(2)使用 Kafka Java Consumer API 编程。

略

(3)使用 Kafka 自带的 JMX 监控指标。

Kafka 消费者提供了一个名为 kafka.consumer:type=consumer-fetch-manager-metrics,client-id=“{client-id}”的 JMX 指标,里面有很多属性。例如:

records-lag-max :最大Lag值,监控到 Lag 越来越大,消费者程序变得越来越慢了

 records-lead-min:最小lead值,Lead 越来越小,甚至是快接近于 0 了,消费者端要丢消息了

用于单独监控分区级别的 Lag 和 Lead 值的JMX 名称为:kafka.consumer:type=consumer-fetch-manager-metrics,partition=“{partition}”,topic=“{topic}”,client-id=“{client-id}”

kafka消费组查看lag:如图存在kafka消息积压情况

 关键微服务CPU和内存WSS存在吃紧情况:

二、问题修复后进行压力测试

相关服务资源情况:

观察环境是否能够平稳运行60分钟及以上。 在配合测试在梯度压测的过程中需要观察如下指标:
1、 实时数据是否能够正常刷新。
2、 在线设备量是否与上数量一致。
3、 实际处理量是否平稳( 观察kafka的实际消费是否平稳)。 
4、 观察实时数据是否能够正常刷新。
5、 历史数据是否能够正常查询, 数据没有丢失 

进行阶梯度压测,首先40个并发,每个梯度10个并发,观察 10分钟,查看环境是否运行平稳。逐渐加码80,160,320.....并发;

逐渐增加设备接入量观察设备工况上数情况,对比优化前后的不同设备量的CPU使用率、WSS使用率、kafka消费着Lag指标监测变化等。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/962037.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号