系统负载load是衡量系统工作量的一个指标,具体的表示为:在特定时间间隔内,系统处于可运行状态和不可中断状态的平均进程数。监控负载load是一个重要指标,可以判断当前业务的负载情况,用于及时告警并做出应对措施。
实现原理
本方案使用云助手插件ACS-ECS-HighLoad,通过vfork命令创建出预期数量的进程,以达到目标的load值,每个进程创建后执行sleep动作,直至超时退出。因此该场景对系统业务影响较小。
使用指南
演练准备
请确保您的ECS实例已安装云助手Agent,并且云助手状态为正常。具体操作,请参见查看云助手状态及异常状态处理。
故障注入
登录ECS实例。
具体操作,请参见使用Workbench登录Linux实例。
使用具有sudo访问权限的用户,运行云助手插件
ACS-ECS-HighLoad。sudo acs-plugin-manager --exec --plugin ACS-ECS-HighLoad --params inject,[num-processes=paramA],[duration=paramB][]内为可选故障注入参数,参数说明:num-processes(可选):需要创建的进程数量,该值略会近似预期达到的最大load值,默认100。
duration(可选):持续时间,默认为300s。
显示如下所示时,说明云助手插件
ACS-ECS-HighLoad已启动。[ecs-user@iZ2zeioazol ~]$ sudo acs-plugin-manager --exec --plugin ACS-ECS-HighLoad --params inject max load: 100, duration: 300 Done查看故障注入是否成功。
使用top命令,分别检查1分钟、5分钟、15分钟系统负载的指标。
在云监控中检查系统负载曲线。
故障恢复
方法一(推荐):等待超时自动恢复。
方法二:在ECS实例中执行故障恢复命令。
sudo acs-plugin-manager --exec --plugin ACS-ECS-HighLoad --params recover
演练示例
故障注入
sudo acs-plugin-manager --exec --plugin ACS-ECS-HighLoad --params inject返回如下所示,表示注入成功,
[ecs-user@iZ2zeioazol ~]$ sudo acs-plugin-manager --exec --plugin ACS-ECS-HighLoad --params inject max load: 100, duration: 300 Done查看注入效果。
使用top命令中查看系统负载,如下所示,1 min为98.33,5 min为58.24,15 min为32.66。
top - 15:29:13 up 23 min, 2 users, load average: 98.33, 58.24, 32.66 Tasks: 304 total, 1 running, 303 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.2 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.2 hi, 0.0 si, 0.0 st MiB Mem : 3565.9 total, 2882.5 free, 164.9 used, 518.6 buff/cache MiB Swap: 0.0 total, 0.0 free, 0.0 used. 3182.1 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1553 root 20 0 123424 21896 15428 S 0.3 0.6 0:08.32 AliYunDunMonito 1 root 20 0 103536 11500 8620 S 0.0 0.3 0:01.21 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-events_highpri 7 root 20 0 0 0 0 I 0.0 0.0 0:00.01 kworker/u4:0-events_unbound 8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_rude_ 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_trace 11 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0 12 root 20 0 0 0 0 I 0.0 0.0 0:00.13 rcu_sched 13 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0 15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/1 16 root rt 0 0 0 0 S 0.0 0.0 0:00.05 migration/1 17 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/1 19 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/1:0H-kblockd 21 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs在云监控控制台查看平均负载。

等待故障恢复。
等待超时,系统负载会慢慢恢复。如下所示,1 min的负载已经低于5 min的负载,说明已经在恢复中。
top - 15:34:05 up 28 min, 2 users, load average: 1.96, 29.71, 28.35 Tasks: 104 total, 1 running, 103 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.2 hi, 0.0 si, 0.0 st MiB Mem : 3565.9 total, 2903.1 free, 146.8 used, 516.0 buff/cache MiB Swap: 0.0 total, 0.0 free, 0.0 used. 3201.6 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 894 root 20 0 1467820 29548 22404 S 0.3 0.8 0:06.64 argusagent 1542 root 20 0 90492 17980 11840 S 0.3 0.5 0:05.73 AliYunDun 1553 root 20 0 123424 21896 15428 S 0.3 0.6 0:09.41 AliYunDunMonito 1 root 20 0 103536 11500 8620 S 0.0 0.3 0:01.22 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-events_highpri 7 root 20 0 0 0 0 I 0.0 0.0 0:00.02 kworker/u4:0-events_unbound 8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_rude_ 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_trace 11 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0 12 root 20 0 0 0 0 I 0.0 0.0 0:00.15 rcu_sched 13 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0 15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/1 16 root rt 0 0 0 0 S 0.0 0.0 0:00.05 migration/1执行故障恢复命令。
sudo acs-plugin-manager --exec --plugin ACS-ECS-HighLoad --params recover
该文章对您有帮助吗?