极客大学 - 架构师训练营 第七周作业
作业一
性能压测问题
性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?
答:系统性能压测一般包括:性能测试、负载测试和压力测试三个阶段。
系统响应时间:表示一个请求从开始到结束的时间。反应了系统的快慢。
吞吐量:表示系统在单位时间内,处理的请求数。体现了系统的处理能力。
并发数:系统能够同时处理的请求数。反应了系统的负载能力
要了解它们之间变化,首先我们要明白我们首先现来看一下吞吐量与并发数以及响应时间的关系:吞吐量 = (1000 * 并发数)/响应时间(ms)
根据这个关系,在正常逐渐增加压力的情况下进行测试我们有以下的三个结论:
随着并发数量的增加,在性能测试阶段,系统运行的响应时间会缓慢增加,吞吐量则会快速上升
当系统的某项或多项性能指标达到安全临界时,如果并发压力继续增加,系统的响应时间增速会加快,吞吐量增速变缓甚至出现下降
继续增加并发压力,系统进入压力测试阶段,由于超过安全负载,响应时间会极速增加,吞吐量也会快速下降,直至系统崩溃无法提供服务
由于真实环境的流量具有不稳定性,为了能够更好地获取系统性能指标,还需要进行稳定性测试。如果不均匀地增加系统并发压力,由于大量缓存失效等原因,系统的压力临界值会提前到来。我们也可以根据课件里的TPS以及响应时间的变化示意图来看一看
性能压测工具
用你熟悉的编程语言写一个 Web 性能压测工具,输入参数:URL,请求总次数,并发数。输出参数:平均响应时间,95% 响应时间。用这个测试工具以 10 并发、100 次请求压测 www.baidu.com。
由于我在海外,所以用了google.com来进行测试。
作业环境
Programming language: Python3.7
OS: Linux
Github url: https://github.com/tonylixu/pyload_tester
HttpResponse.py
请求类,用来存储一次请求的内容和响应时间
HttpClient.py
封装url请求的类
LoadTester.py
压力测试类,定义压测的方法和统计数据
run_test.py
主要运行程序
运行结果:
版权声明: 本文为 InfoQ 作者【9527】的原创文章。
原文链接:【http://xie.infoq.cn/article/44a082ae1c619d2897a5833dd】。文章转载请联系作者。
评论