写一个 web 性能压测工具
发布于: 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; } } }}
划线
评论
复制
发布于: 2020 年 07 月 19 日阅读数: 56
WW
关注
还未添加个人签名 2019.06.04 加入
还未添加个人简介
评论