web 性能压测工具类
发布于: 2020 年 07 月 19 日
JAVA版本
import okhttp3.Call;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class TPS_TEST { public static void main(String[] args) throws InterruptedException { ExecutorService executorServicePool = Executors.newFixedThreadPool(200); final int size = 100; final CountDownLatch cdl = new CountDownLatch(size); long begin = System.currentTimeMillis(); for (int i = 0; i < size; i++) { executorServicePool.execute(new Runnable() { public void run() { try { //压测逻辑,可以调用具体的service String url = "https://time.geekbang.org/"; //每次都建立连接 OkHttpClient okHttpClient = new OkHttpClient(); final Request request = new Request.Builder() .url(url) .build(); final Call call = okHttpClient.newCall(request); Response response = call.execute(); cdl.countDown(); } catch (Exception e) { e.printStackTrace(); } } }); } cdl.await();//等待所有任务处理完 long time = System.currentTimeMillis() - begin; System.out.println("总耗时:" + (double) time / 1000 + " s"); System.out.println("平均响应时间:" + ((double) time) / size + " ms"); System.out.println("TPS:" + (double) size / ((double) time / 1000)); //P95,响应时间排序,取第95个的响应时间 }}
总耗时:1.095 s
平均响应时间:10.95 ms
TPS:91.32420091324201
性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化:
(1)随着并发压力的增加,系统响应时间会在到达某个并发压力值时变的越来越慢,原因是系统资源是有限的,同时系统也会有一些防御性编程的设计导致部分请求被拒绝;
(2)随着并发压力的增加,系统吞吐量首先会越来越高,到达某个峰值后会逐渐下降,原因是系统资源是有限的,同时系统也会有一些防御性编程的设计导致部分请求被拒绝;
划线
评论
复制
发布于: 2020 年 07 月 19 日 阅读数: 37
jason
关注
还未添加个人签名 2017.10.22 加入
还未添加个人简介
评论