web 性能压测工具类

用户头像
jason
关注
发布于: 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)随着并发压力的增加,系统吞吐量首先会越来越高,到达某个峰值后会逐渐下降,原因是系统资源是有限的,同时系统也会有一些防御性编程的设计导致部分请求被拒绝;



用户头像

jason

关注

还未添加个人签名 2017.10.22 加入

还未添加个人简介

评论

发布
暂无评论
web 性能压测工具类