背景
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/meminfoMemTotal: 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 命令观察。
故障中
回滚后