不同的故障注入所支持的故障类型有所不同,本文按照故障场景介绍所支持的故障类型。
说明
各故障场景中的故障配置说明参见 故障配置参数。
注意
仅兼容 GCC 8.3.0 和 GDB 8.2.1 C++ 版本的集群支持 C++ 故障。
故障对象 | 故障类型 | 故障名称 | 说明 |
---|---|---|---|
网络 | 网络故障 | Delay | 网络包延迟。 |
Reject | 拒绝网络服务。 | ||
Loss | 网络包丢失。 | ||
Duplicate | 网络包重复。 | ||
Reorder | 网络包乱序。 | ||
Corrupt | 网络包错误。 | ||
DNS 故障 | Drop | DNS 访问超时。 | |
容器 | Pod 故障 | Pod Kill | 仅故障目标为 Kubernetes 中 Pod 时支持。终止指定的 Pod。 |
Container Hang | 将指定进程挂起。 | ||
系统组件 | 系统故障 | CPU | 设置 CPU 使用百分比和内核数量,模拟 CPU 满载故障。 |
Memory | 设置内存使用百分比,最高支持 100%,模拟 Memory 满载故障。 | ||
磁盘故障 | IOPS 限制 | 设置磁盘某分区的 IO 次数限制,模拟多线任务受限的故障。 | |
读写速度限制 | 设置磁盘某分区的读写速度限制,模拟读写慢的故障。 | ||
服务接口 | 服务接口故障 | HTTP | 仅故障目标为 Kubernetes 中 Pod 时支持。支持通过自定义 HTTP 请求设置故障。 |
服务代码 | Java 故障 | 调用延迟 | 被调用的方法返回时间延长。 |
抛出自定义异常 | 在方法执行过程中抛出异常。填入异常名即可,例如 RuntimeExcepition。 | ||
内存溢出 | JVM 堆(Heap)溢出或栈(Stack)溢出。 | ||
指定类返回值 | 自定义方法的返回值。目前支持 Int 或者 Strin,其中 String 类型参数值需要加双引号。 | ||
进程 CPU 使用率满载 | 使指定的 CPU 核数被 Java 进程满载。 | ||
Kill JVM | 终止 Java 虚拟机进程。 | ||
垃圾回收 | Java 虚拟机执行垃圾回收。 | ||
C++ 故障 | 修改变量 | 修改指定的变量值。目前支持 Int、Float、Double、Bool、Char、Char* 类型的变量。 | |
修改返回值或提前返回 | 修改被调用的方法的返回值或使被调用的方法提前返回.目前支持 Int、Float、Double、Bool、Char、Char* 类型的返回值。 | ||
调用延迟 | 被调用的方法返回时间延长。 |
故障对象 | 故障类型 | 故障名称 | 说明 |
---|---|---|---|
网络 | 网络故障 | Delay | 网络包延迟。 |
Reject | 拒绝网络服务。 | ||
Loss | 网络包丢失。 | ||
Duplicate | 网络包重复。 | ||
Reorder | 网络包乱序。 | ||
Corrupt | 网络包错误。 | ||
DNS 故障 | Drop | DNS 访问超时。 | |
系统组件 | 系统故障 | CPU | 设置 CPU 使用百分比和内核数量。 |
Memory | 设置内存使用百分比,最高支持 100%。 | ||
磁盘故障 | Storage Full | 磁盘空间满载。 | |
磁盘 IO 繁忙 | 磁盘的读写繁忙。 | ||
文件新增 | 新建文件。 | ||
文件重命名 | 更新文件的名称。 | ||
文档删除 | 删除文件。 | ||
文件权限修改 | 更新文件的权限。 | ||
文件元数据修改 | 更新文件的元数据。 | ||
文档内容追加 | 更新文件的内容。 | ||
主机异常 | 主机异常故障 | 重启 | 重新启动主机。 |
杀进程 | 终止主机中的进程。 | ||
宕机 | 关闭主机。 | ||
自定义指令 | 执行用户自定义指令。 |
故障对象 | 故障类型 | 故障名称 | 说明 |
---|---|---|---|
网络 | 网络故障 | Delay | 网络包延迟。 |
Reject | 拒绝网络服务。 | ||
Loss | 网络包丢失。 | ||
Duplicate | 网络包重复。 | ||
Reorder | 网络包乱序。 | ||
Corrupt | 网络包错误。 | ||
DNS 故障 | Drop | DNS 访问超时。 | |
系统组件 | 系统故障 | CPU | 支持设置 CPU 使用百分比和内核数量。 |
Memory | 支持设置内存使用百分比,最高支持 100%。 | ||
磁盘故障 | Storage Full | 磁盘空间满载。 | |
磁盘 IO 繁忙 | 磁盘的读写繁忙。 | ||
文件新增 | 新建文件。 | ||
文件重命名 | 更新文件的名称。 | ||
文档删除 | 删除文件。 | ||
文件权限修改 | 更新文件的权限。 | ||
文件元数据修改 | 更新文件的元数据。 | ||
文档内容追加 | 更新文件的内容。 | ||
主机异常 | 主机异常故障 | 重启 | 重新启动主机 |
杀进程 | 终止主机中的进程。 | ||
宕机 | 关闭主机。 | ||
自定义指令 | 执行用户自定义指令。 |
故障对象 | 故障类型 | 故障名称 | 说明 |
---|---|---|---|
网络 | 网络故障 | Delay | 网络包延迟。 |
Reject | 拒绝网络服务。 | ||
Loss | 网络包丢失。 | ||
Duplicate | 网络包重复。 | ||
Reorder | 网络包乱序。 | ||
Corrupt | 网络包错误。 | ||
进程 | 进程故障 | 进程挂起 | 将指定进程挂起一定时间。 |
系统组件 | 系统故障 | 物理机时钟漂移 | 指定虚拟机和实际时间的偏移时长。 |
磁盘故障 | IOPS 限制 | 设置磁盘某分区的 IO 次数限制,模拟多线任务受限的故障。 | |
读写速度限制 | 设置磁盘某分区的读写速度限制,模拟读写慢的故障。 | ||
服务代码 | Java 故障 | 调用延迟 | 被调用的方法返回时间延长。 |
抛出自定义异常 | 在方法执行过程中抛出异常。填入异常名即可,例如 RuntimeExcepition。 | ||
内存溢出 | JVM 堆(Heap)溢出或栈(Stack)溢出。 | ||
指定类返回值 | 自定义方法的返回值。目前支持 Int 或者 Strin,其中 String 类型参数值需要加双引号。 | ||
进程 CPU 使用率满载 | 使指定的 CPU 核数被 Java 进程满载。 | ||
Kill JVM | 终止 Java 虚拟机进程。 | ||
垃圾回收 | Java 虚拟机执行垃圾回收。 | ||
C++ 故障 | 修改变量 | 修改指定的变量值。目前支持 Int、Float、Double、Bool、Char、Char* 类型的变量。 | |
修改返回值或提前返回 | 修改被调用的方法的返回值或使被调用的方法提前返回.目前支持 Int、Float、Double、Bool、Char、Char* 类型的返回值。 | ||
调用延迟 | 被调用的方法返回时间延长。 |
说明
选择演练对象时,需要在 故障目标类型 中选择 中间件,然后在二级选项中选择目标集群或主机。
故障对象 | 故障类型 | 故障名称 | 说明 |
---|---|---|---|
数据库 | MySQL 故障 | 连接数 | 模拟数据库连接数达到上限。实际模拟的连接数将不超过客户端可发起的连接数的上限。例如客户端连接数上限为 600,设置的连接数为 1000,那么实际模拟的连接数为 600。 |
数据库压力 | 模拟数据库服务端访问量突增,造成数据库 CPU、内存、磁盘等指标突增。 | ||
数据库锁故障 | 模拟数据库数据表锁死无法查询或写入的故障。 | ||
自定义 SQL | 根据业务场景通过 SQL 构建自定义故障。 | ||
PostgreSQL 故障 | 连接数 | 模拟数据库连接数达到上限。实际模拟的连接数将不超过客户端可发起的连接数的上限。例如客户端连接数上限为 600,设置的连接数为 1000,那么实际模拟的连接数为 600。 | |
数据库压力 | 模拟数据库服务端访问量突增,造成数据库 CPU、内存、磁盘等指标突增。 | ||
数据库锁故障 | 模拟数据库数据表锁死无法查询或写入的故障。 | ||
自定义 SQL | 根据业务场景通过 SQL 构建自定义故障。 | ||
SQL Server 故障 | 连接数 | 模拟数据库连接数达到上限。实际模拟的连接数将不超过客户端可发起的连接数的上限。例如客户端连接数上限为 600,设置的连接数为 1000,那么实际模拟的连接数为 600。 | |
数据库压力 | 模拟数据库服务端访问量突增,造成数据库 CPU、内存、磁盘等指标突增。 | ||
数据库锁故障 | 模拟数据库数据表锁死无法查询或写入的故障。 | ||
自定义 SQL | 根据业务场景通过 SQL 构建自定义故障。 | ||
Oracle 故障 | 连接数 | 模拟数据库连接数达到上限。实际模拟的连接数将不超过客户端可发起的连接数的上限。例如客户端连接数上限为 600,设置的连接数为 1000,那么实际模拟的连接数为 600。 | |
数据库压力 | 模拟数据库服务端访问量突增,造成数据库 CPU、内存、磁盘等指标突增。 | ||
数据库锁故障 | 模拟数据库数据表锁死无法查询或写入的故障。 | ||
自定义 SQL | 根据业务场景通过 SQL 构建自定义故障。 | ||
MongoDB 故障 | 数据库锁故障 | 通过 Mongodb fsynclock 命令,为整个数据库实例加锁。加锁后所有的 Write 操作不能执行。 | |
终止读写操作 | 通过定时执行 Mongodb KillOp 指令杀死读写操作,使客户端的读写操作失效。 | ||
缓存 | Redis 故障 | 缓存击穿 | 模拟单个缓存 Key 失效,被击穿的场景。 |
连接池满 | 模拟 Redis 服务端达到最大连接上限的场景。 | ||
消息队列 | Kafka 故障 | 脏数据 | Kafka 中插入脏数据。 |
重复数据 | Kafka 中插入一定数目的重复数据。 | ||
RocketMQ 故障 | 脏数据 | RocketMQ 中插入脏数据。 | |
重复数据 | RocketMQ 中插入一定数目的重复数据。 | ||
RabbitMQ 故障 | 脏数据 | RabbitMQ 中插入脏数据。 | |
重复数据 | RabbitMQ 中插入一定数目的重复数据。 | ||
分布式存储 | ES 故障 | Index 关闭 | ES 数据库库名不可读写。 |
Index 别名删除 | 删除 ES 数据库别名。 | ||
网络 | TCP 故障 | TCP 连接数压力 | TCP 层的连接数压力故障。 |