写点什么

第七周作业

用户头像
carol
关注
发布于: 2020 年 07 月 22 日
第七周作业

作业一



  • 性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?



性能测试是使用性能测试工具,通过多线程模拟用户请求对系统施加高并发的访问压力,以得到响应时间、并发数、吞吐量和性能记数器这些指标。但从实际上来讲呢,性能测试随着性能测试工具逐渐增加请求线程数,系统的吞吐量和响应时间会呈现出不同的性能特性。所以来说呢,性能测试又可以细分为性能测试、负载测试、压力测试这三个阶段。



性能测试:以设计时的性能指标为预期目标,对系统不断施加压力,并以此来验证系统在资源可接受的范围内是否可以达到性能的预期目标。这个过程中啊,并发数越高吞吐量增加越快,但是响应时间呢却变化不是很大,为什么呢?因为这是系统正常发问下的访问呀,这点都hold不住,就不用再继续了。



负载测试:目的很简单就是找到系统的临界值,手段当然也就是对系统不断的加压。这个过程中呢,并发数越多,吞吐量增加的越慢,到一定程度(也就临界值)的时候,吞吐量就要下降了。但总的来说,响应时间还算基本稳定。



压力测试:既然系统性能测试能够达到预期,而且临界值也找到了,那就不妨再加一下,看看啥时候系统会崩,这也是在性能测试中的一个非常重要的判断节点。这个过程中基本上就是在走下坡路了,并发量越高,性能越差(吞吐量越来越小,响应时间也越拉越长),直到开机重启。



画张图来表示一下,大概是这幅模样:



作业二:

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



public class PressTester {
//测试地址
private String testUrl;
//总请求数
private Integer testCounts;
//测试并发数
private Integer testConcurrency;
public PressTester(String testUrl,Integer testCounts,Integer testConcurrency){
this.testUrl=testUrl;
this.testCounts=testCounts;
this.testConcurrency=testConcurrency;
}
private void test(){
ExecutorService executorService=Executors.newFixedThreadPool(testConcurrency);
final List<Long> list=new ArrayList<>();
for(int i=0;i<testCounts;i++) {
executorService.execute(new Runnable() {
@Override
public void run() {
long startTime=System.currentTimeMillis();
Response rep=Http.get(testUrl);
long endTime=System.currentTimeMillis();
list.add(endTime-startTime);
}
});
}
executorService.shutdown();
try{
executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
List<Long> sortList=list.stream().sorted(new Comparator<Long>() {
@Override
public int compare(Long o1, Long o2) {
if (o1 >= o2) {
return -1;
} else {
return 1;
}
}
}).collect(Collectors.toList());
Long total=list.stream().reduce(Long::sum).orElse(0L);
System.out.println("平均响应时间:"+total/testCounts);
System.out.println("95%响应时间:"+sortList.get(95));
}
public static void main(String[] args){
PressTester pressTester=new PressTester("http://www.baidu.com",100,10);
pressTester.test();
}
}



用户头像

carol

关注

还未添加个人签名 2018.04.13 加入

还未添加个人简介

评论 (3 条评论)

发布
用户头像
哈哈,还好了记得艾特我哈~
2020 年 07 月 25 日 10:06
回复
补上了,自己独立完成的
2020 年 07 月 28 日 16:03
回复
赞,有测试结果不
2020 年 08 月 01 日 09:15
回复
没有更多了
第七周作业