有奖捉虫:行业应用 & 管理与支持文档专题 HOT

背景

消息中间件在分布式系统中往往扮演着重要的角色,但是在实际的生产环境中,会有很多因素会导致 Broker 节点的 CPU 高负载。以下为一些常见的场景:
高消息吞吐量:如果 CKafka 集群中的某个主题或分区接收到非常高的消息吞吐量,Broker 节点需要处理大量的读写操作。
大量消费者组:如果有大量的消费者组订阅了同一个主题或分区,Broker 需要为每个消费者组处理消息的分发和管理。
复制和同步:如果 CKafka 集群中启用了数据复制和同步功能,Broker 需要处理复制的读写操作和与其他 Broker 之间的同步通信。
压缩和解压缩:如果消息被压缩存储,Broker 需要进行压缩和解压缩操作,可能会占用大量的 CPU 资源。
索引和日志压缩:CKafka 使用索引来加速消息的查找,如果索引过大或需要进行压缩,Broker 需要进行索引维护和压缩操作。
高并发连接:如果有大量的生产者和消费者连接到 Broker,Broker 需要处理连接的建立和维护,增加 CPU 负载。
当 Broker 节点处于 CPU 高负载时,可能会出现如下几种情况:
延迟增加:高 CPU 负载可能导致消息的处理速度变慢,从而增加消息传输和处理延迟。这会影响消费者从 CKafka 中读取消息的速度,可能导致消费者无法及时获取到最新的消息。
吞吐量下降:由于 CPU 资源被高负载的任务占用,CKafka Broker 可能无法处理更多的消息,导致整体吞吐量下降。这会影响生产者发送消息的速度和消费者消费消息的速度。
网络拥塞:高 CPU 负载可能导致 CKafka Broker 无法及时处理网络请求,从而导致网络拥塞。这会影响与其他 Broker 之间的数据复制和同步,可能导致数据复制延迟增加或数据同步不及时。
响应时间增加:由于高 CPU 负载,CKafka Broker 可能无法及时响应来自客户端的请求,导致客户端的等待时间增加。这会影响与 CKafka 集群交互的应用程序的性能和响应时间。
为此腾讯云混沌演练平台提供了 CKafka Broker CPU 高负载演练动作,以测试业务系统在面对 CKafka Broker 出现高负载时带来的延迟等非预期情况的应对能力和恢复能力,从而提高业务的安全性和稳定性。

注意事项

实例类型:该动作只对实例类型为 CKafka 专业版实例开放故障注入能力。CKafka 标准版实例暂不支持进行演练。
实例状态:建议进行演练的实例上有真实消息生产与消费流量,主题分区数大于3,便于观察故障对业务的影响效果。(非必须项)

演练准备

准备一台可供演练的 CKafka 专业版实例。

步骤一:创建演练

1. 登录 腾讯云混沌演练平台 控制台。
2. 在左侧导航栏选择演练管理页面,单击新建演练。


3. 选择创建空白演练


4. 填写完基本信息后,进入演练对象配置,对象类型选择云资源下的 CKafka,单击添加实例。单击添加实例后,会列出目标地域下所有的 CKafka 实例信息,可以根据实例 ID、VPC-ID、 子网 ID 以及标签筛选符合要求的实例。


5. 选择目标实例后,单击立即添加,即可添加演练动作。


6. 演练动作选择 Broker-CPU 高负载,然后单击下一步


7. 设置动作参数。文档选择 CPU 负载率80%,持续时间200s,单击确认


8. 单击下一步,进入全局配置,全局配置请参见 快速入门


9. 确认无误后,单击提交。


10. 可单击演练详情开始演练。



步骤二:执行演练

1. 观察演练前实例监控数据,这里可以重点关注高级监控中的监控指标。可前往 CKafka 控制台 查看。


2. 由于演练为手动推进,所以需要手动执行故障动作。可单击动作卡片中的执行启动故障注入。


3. 故障注入的同时,可点击日志中的链接前往高级监控观察。


4. 观察到 CPU 利用率达到80%。