blade create jvm delay

介绍

指定类方法调用延迟

参数

以下是此场景特有参数,通用参数详见:[blade create jvm](blade create jvm.md)
1
--effect-count string 影响的请求条数
2
--effect-percent string 影响的请求百分比
3
--time string 延迟时间,单位是毫秒,必填项
4
--offset string 延迟时间上下偏移量,比如 --time 3000 --offset 1000,则延迟时间范围是 2000-4000 毫秒
Copied!

案例

业务方法通过 future 获取返回值,代码如下:
1
@RequestMapping(value = "async")
2
@ResponseBody
3
public String asyncHello(final String name, long timeout) {
4
if (timeout == 0) {
5
timeout = 3000;
6
}
7
try {
8
FutureTask futureTask = new FutureTask(new Callable() {
9
@Override
10
public Object call() throws Exception {
11
return sayHello(name);
12
}
13
});
14
new Thread(futureTask).start();
15
return (String)futureTask.get(timeout, TimeUnit.MILLISECONDS);
16
} catch (TimeoutException e) {
17
return "timeout, " + e.getMessage() + "\n";
18
} catch (Exception e) {
19
return e.getMessage() + "\n";
20
}
21
}
Copied!
我们对 sayHello 方法调用注入 4 秒延迟故障,futureTask.get(2000, TimeUnit.MILLISECONDS) 会发生超时返回:
1
blade c jvm delay --time 4000 --classname=com.example.controller.DubboController --methodname=sayHello --process tomcat
2
3
{"code":200,"success":true,"result":"d6ebea0dc28b6ab3"}
Copied!
注入故障前:
注入故障后:
停止实验:
1
blade d d6ebea0dc28b6ab3
Copied!

常见问题

Last modified 4d ago