架构师 3 期 3 班 -week7- 作业
题目
性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?
用你熟悉的编程语言写一个 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 的响应时间,升序排序
版权声明: 本文为 InfoQ 作者【zbest】的原创文章。
原文链接:【http://xie.infoq.cn/article/451203e0c97c95a8ccc900e8c】。未经作者许可,禁止转载。
评论