有奖:语音产品征文挑战赛火热进行中> HOT
文档中心 > 混沌演练平台 > 故障动作库 > 主机 > CVM 资源(cpu、内存、磁盘)利用率高

背景

CVM(Cloud Virtual Machine)作为最基础的一种云资源,使用很广泛。在使用 CVM 的过程中,由于程序错误、配置不当等原因,会出现 CPU 利用率过高、内存利用率过高、磁盘分区利用率过高等故障情况,导致 CVM 的性能下降,甚至出现服务不可用的情况,给用户造成损失。
为了提高 CVM 的可靠性和稳定性,需要进行故障模拟演练,验证系统在 CPU、内存、磁盘等资源利用率过高的情况下是否能够正常运行,以便提前做好相应的应急预案。

演练实施

步骤一:演练准备

准备一台可以演习的 CVM 实例。
进入探针管理页面为 CVM 节点安装探针,具体安装方式请参考 探针管理 进行操作。

步骤二:演练编排

1. 登录 混沌演练控制台,进入演练管理页面,单击新建演练,点击跳过,新建空白演练。



2. 填写演练基本信息。


3. 填写演练动作组信息,选择主机-CVM


4. 添加演练实例。


5. 添加演练动作,点击立即添加,并配置故障动作参数。
CPU 利用率高





说明:
cpu 利用率:指定 CPU 负载百分比,取值在0 - 100之间。
持续时间:故障动作持续时间,达到该时间探针会自动将故障恢复。
调度优先级:影响进程在 CPU 调度中的优先级。较低的 nice 值使进程更有可能获得 CPU 时间片,从而提高其执行优先级。仅当利用率为100%时生效。
内存利用率高





说明:
内存使用率:指定内存负载百分比,取值在0 - 100之间。
持续时间:故障动作持续时间,达到该时间探针会自动将故障恢复。
是否开启 OOM 保护:开启后会降低故障进程被 OOM-KILL 的可能性,优先 Kill 业务进程。
内存占用速率:每秒增加的内存使用量。
磁盘使用率高





说明:
磁盘目录:需要进行填充的磁盘目录,即文件写入目录。
文件大小:填充的文件大小。
磁盘使用率:通过staf命令获取磁盘使用情况,计算出达到指定使用率所需的文件大小。
保留空间:剩余空间保留大小。
持续时间:故障动作持续时间,达到该时间探针会自动将故障恢复。
如果文件大小、磁盘使用率、保留空间参数都存在,优先级计算逻辑为: 磁盘使用率 > 保留空间 > 文件大小。
磁盘 IO 负载





说明:
磁盘目录:指定提升磁盘 IO 的目录,会作用于其所在的磁盘上。
模式:提供读、写两种方式实施高负载。
块大小:指定每次读取或写入的块大小。
块个数:指定复制的块个数。
持续时间:故障动作持续时间,达到该时间探针会自动将故障恢复。
6. 动作参数配置完成之后,单击下一步。然后根据实际情况配置护栏策略监控指标,完成所有配置之后,单击提交,完成演练创建。







步骤三:执行演练

1. 点击执行 CPU 利用率高动作开始执行演练。


2. 观察监控指标,发现 CPU 负载达到指定使用率,执行回滚动作后恢复。


3. 执行内存利用率高动作,将以配置的占用速率使内存利用率达到指定的大小,执行回滚后恢复稳态。
可观测平台


登入机器,使用 top+m 观察


说明:
注入工具对内存利用率指标采集来自 /proc/meminfo,其计算公式为:Percent = (MemTotal-MemAvailable)/MemTotal
云平台提供的指标观测系统:腾讯云可观测平台,其信息采集同样是来自/proc/meminfo,但其算法不包含缓冲区和系统缓存占用的内容,与注入工具存在差异,具体如下:Percent = (MemTotal-MemFree-Buffers-Cached-SReclaimable+Shmem)/MemTotal
本次演示实例的内存信息如下,以上两种算法套入指标计算得出以下结果:
[root@VM-22-12-tencentos ~]# cat /proc/meminfo
MemTotal: 1721620 kB //系统总内存(RAM)大小
MemFree: 111260 kB //未被使用的内存大小
MemAvailable: 349964 kB //可用于启动新进程的内存大小,该值考虑了系统缓存和缓冲区的使用情况
Buffers: 59624 kB //用于文件系统缓冲区的内存大小
Cached: 570612 kB //用于文件系统缓存的内存大小
......
Shmem: 269980 kB //共享内存的大小
......
SReclaimable: 46308 kB //可回收的内核内存缓存大小
注入工具实现的利用率为: (1721620-349964)/1721620 = 79.6%
腾讯可观测平台实现的利用率为: (1721620-111260-59624-570612-46308+269980)/1721620 = 69.9%
4. 执行磁盘使用率高动作,登入机器后使用 df 命令观察磁盘达到指定使用率,执行回滚动作后恢复至常态。
故障中



回滚后



5. 执行磁盘 IO 高负载动作,进入终端使用 iostat 命令观察。
故障中



回滚后