写点什么

极客时间架构师培训 1 期 - 第 7 周作业

用户头像
Kaven
关注
发布于: 2020 年 11 月 07 日
  1. 性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?



  • 系统随并发压力的增加,响应时间曲线上升;在最初运行区间,响应时间处于最佳运行状态;当系统到达最大负载点前,响应时间处于平缓小幅度上升;系统到达最大负载点后,响应时间快速上升,直至系统崩溃,用户失去响应。


[a, b) 区间,响应时间变化不大,吞吐量在持续增大(根据吞吐量公式),因为服务器能够接收这么多流量。

[b, c) 区间,响应时间逐渐增大,吞吐量在持续增大,增速较[a, b)变缓慢,因为服务器已经超负荷。

[c, d) 区间,响应时间快速增大,吞吐量在缓慢增加,最终达到最高值,因为最终系统崩溃。


  • 系统随并发压力的增加,吞吐量抛物线上升与下降;系统到达最大负载之前,吞吐量抛物线逐渐增加;系统到达最大负载点后,吞吐量呈先抛物线下降,直至系统崩溃,系统资源耗尽,吞吐量最终为零。



性能测试:a~b 并发数增加,TPS 快速增加。

负载测试:b~c 并发数增加,TPS 增长速度变小。

压力测试:c~d 并发数增加,TPS 反而开始下降。


让系统在 b 点位置左右运行;如果在 c 点位置左右,那么就很容易系统奔溃。

到底是在边界 b 点位置的左还是右呢?这要依赖于成本与效益等因素的平衡;若在 b 点靠右的位置,安全低;到达 c 点比较危险。推荐在 b 点靠左的位置。


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

由于时间仓促,写了解题思路;还请老师予以指正

  1. http 请求工具类

  2. 定义统计缓存(耗时,成功数,失败数)

  3. 定义 http 请求任务类,记录耗时,请求结果计数

  4. 根据请求数创建 N 个 http 请求任务

  5. 创建一个 FixedSize 的线程池

  6. 将 http 请求任务提交到线程池

  7. 等待线程池执行完成,统计结果


用户头像

Kaven

关注

还未添加个人签名 2019.04.13 加入

还未添加个人简介

评论

发布
暂无评论
极客时间架构师培训 1 期 - 第 7 周作业