CPU利用率高演练

CPU利用率是衡量业务系统是否健康的一个重要指标,为使业务达到足够的稳定性,CPU利用率需保持在合理的范围内。过高的CPU利用率会导致业务延迟甚至中断。通过注入高CPU故障,可以测试业务系统在特定CPU负载时的反应、检测系统恢复能力、验证监控和告警机制的有效性等,并基于演练结果制定应对策略,确保生产环境高CPU利用率时系统能够迅速恢复正常运行,降低业务中断风险。

实现原理

本方案使用云助手插件ecs-fault-highcpu,启动注入进程AliFaultHighCpu以特定占空比消耗CPU时间片。

使用指南

演练准备

请确保您的ECS实例已安装云助手Agent,并且云助手状态正常。具体操作,请参见查看云助手状态及异常状态处理

故障注入

  1. 使用具有sudo访问权限的用户,运行云助手插件ecs-fault-highcpu

    sudo acs-plugin-manager --exec --plugin ecs-fault-highcpu --params inject,[cpu-percent=paramA],[cpu-list=paramB]

    []内为可选故障注入参数,参数说明:

    • cpu-percent(可选):要达到的CPU利用率,为空时默认100。

      说明

      cpu-percent为注入进程的CPU利用率,总CPU利用率还会受到其他进程的影响。

    • cpu-list(可选):用于对特定vCPU绑定负载,如cpu-list=0-2/4表示对core 0、core 1、core 2和core 4绑定CPU负载,为空时对全部vCPU绑定负载。

  2. 查看故障注入是否成功。

    • 在ECS实例中,执行top命令,CPU利用率上升,说明故障注入成功。其中内核态(sy)和用户态(us)之和约等于设置的CPU利用率。

      image

    • 在云监控监控图表中,注入后CPU利用率上升,说明故障注入成功。

      image

故障恢复

您可以使用以下方式,恢复ECS实例状态。

  • 方法一(推荐):在ECS实例中执行故障恢复命令,查看CPU利用率是否下降到故障注入前的水平。

    sudo acs-plugin-manager --exec --plugin ecs-fault-highcpu --params recover

    如下所示,CPU利用率已下降到故障注入前的水平,系统已恢复正常。

    image

  • 方法二:自行终止名为AliFaultHighCpu的进程。

    为不影响后续重复对该场景故障注入,终止AliFaultHighCpu进程后,再次执行方法一的故障恢复命令。

    sudo kill <AliFaultHighCpu PID>