混沌工程核心

共 21 题
#

1. 混沌工程(Chaos Engineering)的五大原则是什么?如何设计一个完整的混沌实验(从假设到结论)?

A 稳态假设是实验的对照组,没有稳态就无法量化故障影响 ✓ 正确答案
B 混沌实验必须在生产环境执行,模拟环境永远无法替代
C 混沌实验的目标是制造尽可能大的故障以测试系统极限
D 爆炸半径越大,实验发现的问题越多,因此应扩大范围
#

2. 时钟偏移(Clock Skew)、网络延迟注入、节点宕机三类故障的测试策略有何不同?各自需要哪些专门的注入工具?

A 节点宕机只需 kill 进程,无需验证故障转移行为 ✓ 正确答案
B 网络延迟注入可用 Linux tc netem 或 Toxiproxy 实现
C 时钟偏移影响最隐蔽,可能导致分布式锁租约提前过期
D 时钟偏移可通过 NTP 模拟或修改系统时钟实现
#

3. 混沌工程实验的稳态假设(Steady-State Hypothesis)与爆炸半径(Blast Radius)控制如何设计?请以一个微服务调用链为例说明实验设计步骤。

A 不设置 kill switch,让故障自然持续
B 只在单独环境测试,不涉及生产流量
C 对全量生产流量注入故障以测试真实影响
D 只对目标服务的 1% 流量注入并设置自动终止 ✓ 正确答案
#

4. 混沌工程实验的"稳态假设(Steady State)"如何设计?业务核心指标(订单成功率、登录延迟)的基线选取?

A 基线无需考虑业务周期性波动
B 应优先使用 CPU/内存等资源指标作为基线
C 应基于历史数据统计(如均值±标准差)并匹配实验时段 ✓ 正确答案
D 基线应取单次瞬时测量值,越精确越好
#

5. RPO(Recovery Point Objective)和 RTO(Recovery Time Objective)的验证方法是什么?灾难恢复演练中如何确保数据一致性检查的完整性?

A RTO 验证的是可接受的数据丢失量
B RPO/RTO 只需在文档中声明,无需演练验证
C 数据一致性检查仅需核对条目总数即可
D RPO 验证可通过恢复后数据与写入点的时间差断言完成 ✓ 正确答案
#

6. 错误预算(Error Budget)驱动的发布决策,如何计算错误预算消耗速率并据此调整发布节奏?

A 错误预算消耗速率快时应暂停发布并优先修复 ✓ 正确答案
B 错误预算 = SLO 值,SLO 越高预算越多
C 错误预算与发布节奏无关
D 预算耗尽后应继续发布以加快迭代
#

7. 故障注入(Fault Injection)覆盖维度,网络(延迟/丢包/分区)、计算(CPU/内存耗尽)、存储(IO/磁盘)、进程(崩溃/挂起)、时间(时钟偏移/闰秒)的工程实现?

A 时钟偏移只影响显示时间,不影响业务逻辑 ✓ 正确答案
B 进程挂起可用 SIGSTOP 暂停进程
C CPU 耗尽可用 stress-ng 注入,验证 OOM 与资源隔离
D 网络丢包可用 tc netem loss 实现
#

8. 混沌实验的"爆炸半径"如何度量,如何用最小化影响集做渐进式注入?

A 最小化影响集是指先选影响最小的注入点再逐步扩大 ✓ 正确答案
B 渐进式注入应先从核心服务的大流量开始
C 爆炸半径无需记录在实验报告中
D 爆炸半径只度量受影响的实例数,与用户无关
#

9. Chaos Monkey / LitmusChaos / Gremlin 等工具在测试体系中的定位与集成方式?如何选择适合的工具?

A LitmusChaos 只适用于非 Kubernetes 环境
B Chaos Monkey 只适用于验证终止实例的随机可用性 ✓ 正确答案
C Gremlin 是开源免费工具,无需治理
D 所有团队都应选择 Chaos Monkey 作为唯一工具
#

10. 网络分区(Network Partition)测试,如何模拟脑裂(Split-Brain)场景并验证系统的分区容忍行为?

A 脑裂测试只需验证分区期间的行为,无需恢复验证
B 分区恢复后无需验证数据合并与收敛
C 网络分区不会影响 leader 选举,无需测试
D 脑裂指集群分成两组各自形成 leader,是最危险的故障之一 ✓ 正确答案
#

11. 降级与限流预案在故障演练中的验证,如何确认降级策略在真实故障下按预期生效?

A 降级后核心功能允许完全不可用
B 限流阈值无需验证是否与 SLO 相符
C 应注入下游故障并确认系统自动切换到降级路径 ✓ 正确答案
D 只需验证预案文档存在,无需真实演练
#

12. 爆炸半径(Blast Radius)控制,按业务域/可用区/租户/版本逐步放量的安全实验设计?

A 应对所有业务域一次性注入故障以提高效率
B 放量顺序应优先选择核心交易域
C 放量过程无需设置 kill switch
D 每级放量后应验证稳态指标,达标的才进入下一级 ✓ 正确答案
#

13. 在 K8s 中注入 Pod/节点/网络/磁盘故障时,各自的典型故障模型与验证目标是什么?

A Pod 故障由 Deployment 控制器重建,验证副本恢复 ✓ 正确答案
B 节点故障无需验证 Pod 重新调度
C 磁盘故障不影响 PV 数据持久化
D 网络故障由 CPU 控制器处理
#

14. Game Day 演练与混沌实验有何区别?如何设计一场验证应急预案与人员响应的 Game Day,演练目标、控制者/执行者/观察者角色、时间盒、场景脚本、时间线复盘与行动项闭环如何落地?

A Game Day 复效应聚焦改进而非追责
B 混沌实验侧重验证系统韧性的技术假设
C Game Day 完全不需要控制者与时间盒 ✓ 正确答案
D Game Day 侧重演练组织与人员响应
#

15. 混沌实验的自动化编排,如何把故障注入实验纳入 CI/CD 流水线,并保证实验失败不阻断正常发布?

A 混沌实验只能在生产环境手动执行
B 混沌实验无需设置超时与失败阈值
C 混沌实验失败应阻断发布以保证质量
D 混沌实验失败应记录告警但不阻断发布 ✓ 正确答案
#

16. 混沌实验的安全终止机制(Rollback/Kill Switch)如何设计?如何防止实验失控影响生产?

A 每个实验设置最大时长自动回滚
B Kill Switch 打开后应终止所有注入
C 回滚逻辑应幂等,可多次安全执行
D 健康约束触发时不应自动终止,以免误伤 ✓ 正确答案
#

17. 混沌工程在预生产环境(Staging)与生产环境(Production)实施的差异和注意事项?

A 生产环境实验最真实,但风险最高,需严格控爆炸半径 ✓ 正确答案
B 预生产环境实验在任何情况下都完全可信
C 生产环境的实验无需审批与提前沟通
D 预生产环境无需复现生产拓扑
#

18. 混沌工程与常规测试的关系,混沌实验能否替代传统的故障恢复测试?两者的互补方式?

A 混沌实验是确定性测试,结果可预测
B 传统测试验证已知故障的恢复路径,混沌实验探索未知韧性缺口 ✓ 正确答案
C 混沌实验可以完全替代传统故障恢复测试
D 混沌工程与故障恢复测试互斥,只能二选一
#

19. 韧性测试的度量指标有哪些?MTTF/MTTR/MTBF 在系统韧性评估中的作用?

A MTTF 衡量修复时间,越大韧性越强
B MTBF = MTTF + MTTR ✓ 正确答案
C 三者互不相关,无法评估韧性
D MTTR 衡量故障前时间,越小越可靠
#

20. Chaos Engineering 在 SLO 驱动下的实验选择,基于错误预算消耗速度挑选下一轮实验?

A 应对错误预算消耗最快的服务优先注入故障 ✓ 正确答案
B 实验优先级与错误预算消耗速率无关
C 消耗快说明服务很稳定,无需实验
D 应对预算富余的服务完全不做混沌实验
#

21. 如何避免混沌实验被当作"背锅工具",与复盘文化如何衔接?

A 混沌实验失败应追责相关责任人
B 混沌实验发现的问题应归因于系统性因素而非个人失误 ✓ 正确答案
C 实验失败意味着团队能力不足,应避免记录
D 混沌实验的目的是找出执行者的问题