RT降级
步骤
配置
如下图所示,意思为当1s内有5个请求且相应时间超过200毫秒,则会触发降级
编码
编写一个相应时间为1s的请求,模拟第二个条件
@GetMapping("/getD")
public String getD() {
//暂停几秒钟线程
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
log.info("testD 测试RT");
return "------testD";
}
jmeter开线程
-
创建线程组
-
如下图所示,意思为设置一个名字为8401Test的线程组,100个线程,ramp up period为0意思为一口气全部出去,设置为infinite意为无限循环
- 再添加一个http请求
- 运行,这里保存是可选的
具体可以参照
Jmeter接口压测快速入门
浏览器请求查看被打爆的结果
RT-异常比例降级
配置
如下图所示,意思为1s内5个,请求且错误率为20%则触发降级
编码
制造一个百分百错误的请求
@GetMapping("/getD")
public String getD() {
int i=1/0;
//暂停几秒钟线程
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
log.info("testD 测试RT");
return "------testD";
}
测试
进行压测的测试
- 使用jmeter请求,继续使用上文所示的压测用例,不多赘述
- 浏览器请求,可以看到被降级了
未进行压测的测试
可以看到直接走error page
sentinel-异常数
配置
如下所示,意思为70s内错5次降级
编码
@GetMapping("/getE")
public String getE() {
int i=1/0;
//暂停几秒钟线程
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
log.info("getE 测试异常数");
return "------testD";
}
不断刷新测试
可以看到前5次是这样的
5次之后
源码地址
https://gitee.com/fugongliudehua/mscloud