* Dubbo version: 2.6.0
* Operating System version: Centos6.5 64(VMWare 12)
* Java version: 1.8.0_11
* Dubbo配置:
logger: log4j
dubbo: 2.6.0
loadbalance: roundrobin
threads: 200
interface: com.steven.mall.service.service.IOrderService
threadpool: fixed
generic: false
serialization: kryo
application: mall-dubbo
default.service.filter: TimerStaticsFilter
* 过滤器统计调用时间代码:
```java
public class TimerStaticsFilter implements Filter {
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws
RpcException {
try {
long beginTime = System.currentTimeMillis();
Result result = invoker.invoke(invocation);
long end = System.currentTimeMillis();
long costTime = end - beginTime;
if (invocation.getMethodName().indexOf("submitOrder")
!= -1) {
RedisCache.incr("serverCostTime", costTime);
RedisCache.incr("serverCallCount", 1);
}
return result;
} catch (RpcException e) {
throw e;
}
}
}
```
* 业务方法统计调用时间方法
```java
public Map<String, Object> submitOrder(Order order) throws Exception {
long beginTime = System.currentTimeMillis();
//业务方法执行
long endTime = System.currentTimeMillis();
long costTime = endTime - beginTime;
RedisCache.incr("businessCostTime", costTime);
RedisCache.incr("businessCallCount", 1);
return result;
}
```
* 测试过程:
启动100个线程,每个线程for循环调用100次submitOrder方法(总共调用10000次)
* 经过多次测试后,统计结果如下:
```Bash
----------------start(2018-09-09 15:30:20)----------------------
application started,thread[100],loop[100]
clear redis statics info
startTime:2018-09-09 15:30:23
endTime:2018-09-09 15:30:30
server per request avg businessCostTime:'13 ms'
server per request avg serverCostTime:'43 ms'
client per request avg time:67 ms
client tps:1492.5373134328358
----------------end----------------------
```
[ Full content available at:
https://github.com/apache/incubator-dubbo/issues/2474 ]
This message was relayed via gitbox.apache.org for [email protected]