作业一(至少完成一项):
1、性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?
性能测试是一个总称,具体可细分为性能测试、负载测试、压力测试、稳定性测试。
吞吐量 TPS = (1000ms / 响应时间 ms) * 并发数
性能测试:a~b 并发数增加,TPS 快速增加。负载未达到系统软硬件瓶颈,对请求立即做出响应,吞吐量与负载呈线性关系,系统有充足的资源。
负载测试:b~c 并发数增加,TPS 增长速度变小。系统无法一次性处理所有响应,响应时间开始递增,吞吐量随负载增加缓慢上涨,系统资源紧张。
压力测试:c~d 并发数增加,TPS 反而开始下降。系统资源消耗殆尽,响应时间快速上涨,吞吐量迅速下降,系统超负荷运行很可能崩溃。
2、用你熟悉的编程语言写一个 Web 性能压测工具,输入参数:URL,请求总次数,并发数。输出参数:平均响应时间,95% 响应时间。用这个测试工具以 10 并发、100 次请求压测 www.baidu.com。
import gevent
import time
import requests
from gevent import pool
URL = 'https://www.baidu.com/'
results = []
#http get请求
def get(url):
begin = time.perf_counter()
response = requests.get(url)
end = time.perf_counter()
results.append(end - begin)
def main():
pools = pool.Pool(10)
tests = []
for i in range(100):
tests.append(pools.spawn(get, URL))
gevent.joinall(tests)
print('平均响应时间: '+ str(sum(results)/100))
print('95%响应时间: '+ str(sorted(results)[94]))
if __name__ == '__main__':
main()
复制代码
作业二 总结
评论