← 中文资源

简体中文版本

执行受控混沌实验

提出可证伪的韧性假设,定义稳态与爆炸半径,注入单一故障,并在护栏触发时自动中止。

阅读英文原文

从可证伪的假设开始

混沌实验不是随机破坏,而是检验具体信念:“如果一个 API Pod 死亡,服务仍能满足 SLO。”假设要写明故障、预期行为、指标和观察窗口。如果结果无法与基线比较,这次实验只是演示,不是证据。

假设: 杀死三个 API Pod 中的一个,p95 仍 < 300 ms
稳态: p95 180 ms,5xx 0.02%,3 个 Pod 就绪
爆炸半径: 预发命名空间中的一个 Pod
中止: p95 > 500 ms 或 5xx > 1% 持续 60 秒

限定爆炸半径与持续时间

先在预发环境运行。需要验证生产特有行为时,使用金丝雀或单可用区,并限制时间。提前定义中止条件,并让一名观察者有权停止。中止应基于客户影响,而不只是假设失败。导致事故的混沌实验本身就是实验设计失败。

恢复与学习

移除注入并确认系统回到稳态,比较观察到的恢复时间与设计目标。为每个意外行为创建工单:缺失超时、重试风暴、仪表盘空白或运行手册缺失步骤。产出不是实验报告,而是让下一次故障变得平淡的修复与测试。

不要用混沌替代设计

注入故障无法弥补缺失的超时或单实例数据库。先修复已知基础问题。混沌最有价值的时刻,是系统已按故障设计、团队需要真实条件下的证据。