基于故障注入ChaosBlade的常用命令

一、下载安装


wget https://chaosblade.oss-cn-hangzhou.aliyuncs.com/agent/github/1.0.0/chaosblade-1.0.0-linux-amd64.tar.gz
tar zxvf chaosblade-1.0.0-linux-amd64.tar.gz
cd chaosblade-1.0.0

二、模拟故障

1、CPU满载
./blade create cpu load
2、指定CPU百分比负载
./blade create cpu load --cpu-percent 60

3、内存满载
./blade c mem load --mode ram --mem-percent 100 --timeout 600 && top
:适用blade对内存故障时很快恢复正常,不满足需求,故适用stress进行模拟

sudo apt-get update
sudo apt install stress
stress –i 4 –vm 10 –vm-bytes 1G –vm-hang 100 –timeout 100s
说明:新增4个io进程,10个内存分配进程,每次分配大小1G,分配后不释放,测试100S 确认cpu处于满载状态

4、磁盘满载
 df -h #检查磁盘空余
./blade create disk fill --path /hbdata--size 140000  # 140G
dd if=/dev/zero of=test bs=1M count=8000  # 使用dd生成文件填满余下空间

5、内存溢出oom
./blade prepare jvm --pid  1 ## 设置异常的进程id
./blade c jvm oom --area HEAP --wild-mode true --process java --timeout 300

6、网络延迟
./blade create network delay --time 3 --offset 1 --interface eth0 --local-port 6379

  #基于k8s
./blade create k8s container-network delay --time 1000 --offset 500 --interface eth0 --local-port 8080  --kubeconfig config --namespace xxx --container-ids 19fa3372f4ffa448a3cc3f2fa9d880bb9a1d4aeff3f16a29a38f4a8b8c08ad7c --labels app= gen=75


7、网络丢包
./blade create network loss --percent 10 --interface eth0 --local-port 6379

8、目标请求包破损
./blade create network corrupt --percent 10 --destination-ip 172.19.7.251 --interface eth0 #  如a服务调用b服务 ,在a服务执行故障,  destination-ip目标ip为b服务ip , b服务将受影响

9、目标请求包乱序
./blade c network reorder --correlation 80 --percent 50 --gap 2 --time 500 --interface eth0 --destination-ip 172.19.2.219 #  如a服务调用b服务 ,在a服务执行故障,  destination-ip目标ip为b服务ip , b服务将受影响

10、进程被杀
./blade create process kill --process app-name


11、端口不可用,通过网络100%丢包模拟
./blade create network loss --percent 100 --interface eth0 --local-port 20880,2181 && date

12、jvm-cpu满载
./blade create jvm cpufullload --cpu-count 6 --pid 1

13、running线程异常增多
./blade create jvm threadfull --thread-count 200  --running  --pid 1  && date

14、waiting线程异常增多
./blade create jvm threadfull --thread-count 100 --pid 1 
./blade create jvm threadfull --thread-count 200  --wait  --pid 1 && date

14、代码缓冲区满载
./blade create jvm CodeCacheFilling --pid 1

15、dubbo服务线程池满载
./blade create  dubbo threadpoolfull --provider --pid 1(provider方执行)
./blade c dubbo threadpoolfull --provider --pid 1 && date

16、模拟客户端redisson异常
./blade create redisson delay --time 100
./blade create redisson delay --time 300 --offset 300 --effect-percent 100 --pid 1 && date

17、模拟客户端jedis异常
./blade create jedis delay --time 500 -- offset 500--pid 1 ##pid为应用id

三、销毁故障实验

1、销毁故障
blade destroy beeaaf3a7007031d #beeaaf3a7007031d为执行故障返回的result-id

2、查询执行故障类型状态
blade status --type create  #attach|create|destroy|detach

你可能感兴趣的:(故障注入,linux)