当今社会互联网应用愈来愈普遍,用户量日益剧增。在人们对互联网服务的依赖性增大的同时,也对服务的可用性和体验感有了更高的要求。那么如何保障服务在运营过程当中能一直给用户提供稳定的、不间断的、可靠可信的服务呢?linux
例如一个教育或者加金融系统产品,若是线上出现了故障,那么可能带来巨大的损失。因为金融产品或者教育类系统架构和业务逻辑是至关复杂和链条厂,所以咱们测试工程师经过单元测试、接口测试、集成测试、性能测试等来验证服务的稳定性。但尽管如此,也是远远不够的,由于错误能够在任什么时候间以任何形式发生,尤为是对分布式系统。因此如今不少公司开始引入混沌工程(馄饨工程国内最佳实践公司目前是阿里,你们有兴趣能够去网上看下阿里混沌工程相关实践经验),因为混沌工程须要不断的投入和积累,因此咱们测试部门为了模仿和预防线上故障演练,能够先进行故障注入演练,这样成本最小,收益也最大化。git
阿里按照优先分析P1和P2故障,按照IaaS、PaaS、SaaS层的角度绘制了故障画像,以下图:github
目前业内模拟故障的工具比较多样化,支持的功能和场景也各有优劣。经过对比来看,chaosblade支持功能和场景比较丰富,同时社区也是比较活跃的,咱们能够选择这个尝试一下微信
chaosblade 所支持的场景,能够参考文档:架构
https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn/分布式
下面进行简单的故障模拟工具
下载路径:性能
https://github.com/chaosblade-io/chaosblade/releases单元测试
解压即用,无需安装测试
tar -zxvf chaosblade-0.9.0.linux-amd64.tar.gz
CPU压力注入:
结果以下:
内存压力注入:
效果以下:
磁盘压力注入:
效果以下:
网卡故障注入:
观察接口的话,能看到接口响应时间明显变长:
以上只是chaosblade最基本的故障注入演示,其余演练你们能够自行尝试,特别是服务层的故障注入演练做为咱们测试同窗是应该重点去关注和优先去尝试的,再次强烈建议你们在公司内部尝试服务层故障注入演练~
你们若是对故障演练有什么疑问或者研究的能够添加管理员微信,一块儿交流探讨。