简易 web 性能工具

用户头像
王鹏飞
关注
发布于: 2020 年 07 月 27 日
简易web性能工具

用你熟悉的编程语言写一个 web 性能压测工具,输入参数:URL,请求总次数,并发数。输出参数:

平均响应时间,95% 响应时间。用这个测试工具以 10 并发、100 次请求压测 www.baidu.com。

package other;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.*;
/**
*
* 用你熟悉的编程语言写一个 web 性能压测工具,输入参数:URL,请求总次数,并发数。输出参数:
* 平均响应时间,95% 响应时间。用这个测试工具以 10 并发、100 次请求压测 www.baidu.com。
*
*/
public class WebTest {
/**
* 相应时间集合
*/
private static List<Long> responseCostList = new ArrayList<>();
public void httpTest(String url,int requestCount,int concurrentCount){
ExecutorService executor = new ThreadPoolExecutor(concurrentCount,
concurrentCount,1000,
TimeUnit.SECONDS,
new ArrayBlockingQueue<>(requestCount));
int loopCount = requestCount / concurrentCount;
for (int i = 0; i < loopCount; i++) {
for (int j = 0; j < concurrentCount; j++) {
Task t = new Task(url);
Future<Long> result = executor.submit(t);
try {
responseCostList.add(result.get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
Collections.sort(responseCostList);
Long sum = responseCostList.stream().mapToLong(value -> value).sum();
System.out.println("平均响应时间:" + (sum/requestCount) +" ms");
Long c95 = responseCostList.get(95);
System.out.println("95%响应时间:" + c95 +" ms");
executor.shutdown();
}
public static void main(String[] args) {
WebTest test = new WebTest();
test.httpTest("http://www.baidu.com",100,10);
}
class Task implements Callable<Long>{
private String url ;
public Task(String url){
this.url = url;
}
@Override
public Long call(){
long current = System.currentTimeMillis();
HttpClientUtil.get(url,10000);
long finish = System.currentTimeMillis();
return finish-current;
}
}
}

输出:



发布于: 2020 年 07 月 27 日 阅读数: 17
用户头像

王鹏飞

关注

还未添加个人签名 2019.06.11 加入

还未添加个人简介

评论

发布
暂无评论
简易web性能工具