dubbo接口压测工具stresstester使用

最近在压测dubbo接口,发现写一个消费者jar去调用dubbo接口,然后用jmeter压测,每次都重新启动jar,每启动一次jar就相当于与需要压测的接口系统新建一个长连接,耗时都用在这了,后来发现一个淘宝的工具stresstester,反编译看了下源码,现在将使用方法记录下。

maven引用如下:

<dependency>
		<groupId>com.taobao</groupId>
		<artifactId>stresstester</artifactId>
		<version>1.0</version>
	</dependency>

不过这个现在已经拉不下来了,提供一个jar包下载地址:点击打开链接

替换到maven本地私服com/taobao目录下即可

使用方法很简单,直接main函数即可:

public class QueryRealtimeServerTest {
	public static void main(String[] args) {
		//加载dubbo配置文件
		ClassPathXmlApplicationContext context =  
				new ClassPathXmlApplicationContext(new String[] {"dubbo.xml"});
		//获取server
		QueryRealtimeServer queryRealtimeServer = (QueryRealtimeServer) context.getBean("queryRealtimeServer");
		
		/**
		 * StressTestUtils.test(int concurrencyLevel, int totalRequests, StressTask stressTask, int warmUpTime);
		 * concurrencyLevel  总并发次数
		 * totalRequests 总请求次数, 单个线程请求次数= totalRequests/concurrencyLevel
		 * stressTask  并发主体
		 * warmUpTime  初始绿灯测试stressTask次数
		 */
		StressResult stressResult = StressTestUtils.test(30, 30, new StressTask() {

			@Override
			public Object doTask() throws Exception {
				//dubbo请求
				StockRealtimeQuoteReq stockRealtimeQuoteReq = new StockRealtimeQuoteReq();
				Set<String> stockCodes = new HashSet<>();
				stockCodes.add("000001");
				stockCodes.add("000002");
				stockRealtimeQuoteReq.setStockCodes(stockCodes);
				CommonRequest<StockRealtimeQuoteReq> commonRequest = new CommonRequest<>();
				commonRequest.setRequestParam(stockRealtimeQuoteReq);
				queryRealtimeServer.getRealtimeQuote(commonRequest);

				return null;
			}
		}, 0);
		//数据格式化
		String str = StressTestUtils.format(stressResult);
		System.out.println(str);
	}
}
dubbo的消费模式这里就不说了,主要用这个方法去压测:
StressTestUtils.test(int concurrencyLevel, int totalRequests, StressTask stressTask, int warmUpTime);

concurrencyLevel  总并发次数

totalRequests 总请求次数, 单个线程请求次数= totalRequests/concurrencyLevel

stressTask  并发主体

warmUpTime  初始绿灯测试stressTask次数

这个方法返回一个结果集StressResult类

这个工具提供一个结果格式化方法 StressTestUtils.format(stressResult)

如果有特殊需求也可以通过获取StressResult类自定义生成报表之类,运行结果如下:

 Concurrency Level: 30--并发数

 Time taken for tests: 1206.2787 ms--测试耗时

 Complete Requests: 30--完成测试次数

 Failed Requests: 0--失败次数

 Requests per second: 25.295425--QPS

 Time per request: 1185.9851 ms--平均耗时

 Time per request: 39.53284 ms (across all concurrent requests)--平均耗时,忽略并发影响

 Shortest request: 1142.5342 ms--最短耗时

 Percentage of the requests served within a certain time (ms)

  50% 1191.0828--50% 的耗时在0.005703毫秒以下

  66% 1201.3679

  75% 1202.0448

  80% 1202.2448

  90% 1204.9126

  95% 1204.9615

  98% 1206.2787

  99% 1206.2787

 100% 1206.2787 (longest request)--最长的耗时






posted @ 2018-03-01 15:27  luoylove  阅读(573)  评论(0编辑  收藏  举报