一、下载安装
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