写点什么

架构师 3 期 3 班 -week7- 作业

用户头像
zbest
关注
发布于: 2021 年 01 月 11 日

题目

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


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


完成情况

作业 1

响应时间和吞吐量是 2 个维度


响应时间,如下图所示


在 0-t1,响应时间很短,基本上此时系统资源充足,每个并发线程都可以很即时获取到系统资源,从而快速的响应和处理

在并发数超过 t1 后,由于线程数量多,cpu 频繁切换线程的弊端更加明显,拖慢响应时间。系统资源的负载都相对较高

在并发数超过 t2 后,可能由于句柄数、内存等限制,越来越多的线程可能会出现等待的情况,严重影响响应时长,并且系统资源趋于满负载,系统稳定性得不到保证。


吞吐量,如下图所示


在 0-t1,由于系统资源负载低,随着并发数量的提高,单位时间内系统可以同时处理多个请求,充分利用系统资源

在 t1-t2 阶段,系统负载达到一定程度,处理请求的平均响应时间会变长,所以吞吐量增长没有 t1 之前的时间段快,但系统仍能保证正常响应。

在 t2-t3 阶段,系统负载趋于饱和,可能有大量任务排队等待系统资源,吞吐能力反而下降,而且随着并发不断增加,系统有可能无法对外提供服务。


作业 2



最近在学习 go 语言,所以用 go 做作业


router.go 是路由类

urlaccesstest_handler.go 是 controller 处理类

runner.go 压测调度类,负责并发生成及处理 task

task.go 任务类,描述被压测的任务


项目地址:[week7 作业 2](https://github.com/zbest0513/go_study/tree/master/week7)


请求地址

http://127.0.0.1:8085/url/test?url=http://www.baidu.com&count=100

响应:

avg_time 是平均时间

target_time 是 95%时间

results 是每个 task 的响应时间,升序排序

{    "avg_time": "1.44",    "results": "[0.38,0.38,0.45,0.46,0.47,0.49,0.70,0.72,0.73,0.77,0.78,0.87,0.88,0.88,0.89,0.89,0.93,0.99,1.02,1.04,1.08,1.08,1.14,1.16,1.16,1.17,1.17,1.17,1.19,1.20,1.23,1.27,1.27,1.28,1.32,1.33,1.33,1.34,1.34,1.38,1.40,1.40,1.40,1.42,1.43,1.43,1.43,1.44,1.44,1.44,1.45,1.46,1.46,1.46,1.48,1.48,1.51,1.51,1.52,1.56,1.57,1.57,1.57,1.64,1.66,1.66,1.68,1.68,1.68,1.73,1.73,1.75,1.77,1.78,1.78,1.78,1.79,1.79,1.82,1.82,1.86,1.87,1.87,1.88,1.88,1.89,1.92,1.92,1.92,1.94,1.98,1.98,1.98,2.09,2.12,2.19,2.36,2.36,2.39,2.44]",    "target_time": "2.12"}
复制代码


发布于: 2021 年 01 月 11 日阅读数: 16
用户头像

zbest

关注

一个胖子 2020.11.04 加入

一个不正经的java程序员, 整天写着openresty和go的代码, 努力从键摄向非职业摄影师迈进, 快要溺死在内耗里的中年人, 胖子。

评论

发布
暂无评论
架构师 3 期 3 班 -week7- 作业