写点什么

写一个 web 性能压测工具

用户头像
WW
关注
发布于: 2020 年 07 月 19 日

用你熟悉的编程语言写一个 web 性能压测工具,输入参数:URL,请求总次数,并发数。输出参数:平均响应时间,95% 响应时间。用这个测试工具以 10 并发、100 次请求压测 www.baidu.com。



import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
public class BaiduTest {
public static Map<String,Long> hashMap = new ConcurrentHashMap<>();
public static void main(String[] args) {
long start = System.currentTimeMillis();
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(10);
for (int i = 0; i < 100; i++) {
fixedThreadPool.execute(new Runnable() {
@Override
public void run() {
long startTIme = System.currentTimeMillis();
String str = HttpClientUtil.httpGet("http://www.baidu.com");
long endTIme = System.currentTimeMillis();
long useTime = endTIme-startTIme;
System.out.println("useTime"+useTime);
hashMap.put(UUID.randomUUID().toString(),useTime);
}
});
}
fixedThreadPool.shutdown();
while(true){
if(fixedThreadPool.isTerminated()){
System.out.println((System.currentTimeMillis() - start) + "ms");
System.out.println("所有的子线程都结束了!");
AtomicReference<Long> allTIme = new AtomicReference<>(0l);
List<Long> nineFiveTIme = new ArrayList<>();
AtomicInteger i = new AtomicInteger();
hashMap.forEach((k,v)->{
allTIme.updateAndGet(v1 -> v1 + v);
nineFiveTIme.add(v);
});
nineFiveTIme.sort(Comparator.comparingLong(Long::longValue));
System.out.println("平均响应时间:"+allTIme.get()/100+"ms");
System.out.println("95%响应时间:"+nineFiveTIme.get(95)+"ms");
break;
}
}
}
}



用户头像

WW

关注

还未添加个人签名 2019.06.04 加入

还未添加个人简介

评论

发布
暂无评论
写一个 web 性能压测工具