状态变化类故障注入测试指南
1.1. 故障场景
状态变化类故障包括机器重启、掉电、意外关机、kernel panic、应用意外停止、进程被杀,进程hang死,时间漂移等。
1.2. 演练目标
是否能监控发现
应用是否支持故障自动恢复&资源转移,是否有对应的预案
故障恢复的时长
1.3. 模拟手段
1.3.1. 机器重启
直接在shell中执行reboot
reboot
1.3.2. 机器掉电
拔掉机器电源(VMware虚拟机在控制终端执行关机操作,ESXI虚拟机在控制终端执行关闭电源操作)
1.3.3. 机器关机
直接在shell中执行init 0
init0
1.3.4. kernel panic
kernel panic用于模拟系统崩溃,在shell中执行如下命令
echo c > /proc/sysrq-trigger
其他用法
# 立即重新启动计算机
echo "b" > /proc/sysrq-trigger
# 立即关闭计算机
echo "o" > /proc/sysrq-trigger
# 导出内存分配的信息 (可以用/var/log/message 查看)
echo "m" > /proc/sysrq-trigger
# 导出当前CPU寄存器信息和标志位的信息
echo "p" > /proc/sysrq-trigger
# 导出线程状态信息
echo "t" > /proc/sysrq-trigger
# 故意让系统崩溃
echo "c" > /proc/sysrq-trigger
# 立即重新挂载所有的文件系统
echo "s" > /proc/sysrq-trigger
# 立即重新挂载所有的文件系统为只读
echo "u" > /proc/sysrq-trigger
1.3.5. 应用意外关闭
Kingbase意外停止,bin目录下手动执行
./sys_ctl –D xxx/data stop
1.3.6. 进程被杀死
kill pid:
发送TERM(Terminate,终止)信号
Kill -9 pid:
该信号信号不会被发送到目标程序,而是通过内核立即终止这个进程。当一个进程以这种方式终止的时候,它没有机会去做些“清理”工作,或者是保存工作。
killall processname:
给匹配特定程序或用户名的多个进程发送信号
推荐工具:
blade create process kill --process processname
1.3.7. 进程hang住
#注入
kill -s SIGSTOP pid
killall -s SIGSTOP processname
#恢复
kill -s SIGCONT pid
killall -s SIGCONT processname
推荐工具:
blade create process stop --process processname
1.3.8. 磁盘只读
立即重新挂载所有的文件系统为只读
echo "u" > /proc/sysrq-trigger
1.3.9. 时间漂移
date –s 修改系统时间
date -s "2020-09-08 10:40:40"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了