极客时间架构师培训 1 期 - 第 7 周作业
性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?
系统随并发压力的增加,响应时间曲线上升;在最初运行区间,响应时间处于最佳运行状态;当系统到达最大负载点前,响应时间处于平缓小幅度上升;系统到达最大负载点后,响应时间快速上升,直至系统崩溃,用户失去响应。
[a, b) 区间,响应时间变化不大,吞吐量在持续增大(根据吞吐量公式),因为服务器能够接收这么多流量。
[b, c) 区间,响应时间逐渐增大,吞吐量在持续增大,增速较[a, b)变缓慢,因为服务器已经超负荷。
[c, d) 区间,响应时间快速增大,吞吐量在缓慢增加,最终达到最高值,因为最终系统崩溃。
系统随并发压力的增加,吞吐量抛物线上升与下降;系统到达最大负载之前,吞吐量抛物线逐渐增加;系统到达最大负载点后,吞吐量呈先抛物线下降,直至系统崩溃,系统资源耗尽,吞吐量最终为零。
性能测试:a~b 并发数增加,TPS 快速增加。
负载测试:b~c 并发数增加,TPS 增长速度变小。
压力测试:c~d 并发数增加,TPS 反而开始下降。
让系统在 b 点位置左右运行;如果在 c 点位置左右,那么就很容易系统奔溃。
到底是在边界 b 点位置的左还是右呢?这要依赖于成本与效益等因素的平衡;若在 b 点靠右的位置,安全低;到达 c 点比较危险。推荐在 b 点靠左的位置。
用你熟悉的编程语言写一个 Web 性能压测工具,输入参数:URL,请求总次数,并发 数。输出参数:平均响应时间,95%响应时间。用这个测试工具以 10 并发、100 次请 求压测 www.baidu.com。
由于时间仓促,写了解题思路;还请老师予以指正
http 请求工具类
定义统计缓存(耗时,成功数,失败数)
定义 http 请求任务类,记录耗时,请求结果计数
根据请求数创建 N 个 http 请求任务
创建一个 FixedSize 的线程池
将 http 请求任务提交到线程池
等待线程池执行完成,统计结果
评论