架构师训练营 第七周 作业
性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?
先阐述一下如下概念
并发压力
指系统能够同时处理请求的数目。对于网站而言,并发数即网站并发用户数,指同时提交请求的用户数目。
系统响应时间
指应用执行一个操作所需的时间,包括从发出请求开始到最后收到响应所需要的时间。
吞吐量
指单位时间内系统处理的请求数,体现系统的整体处理能力。对于网站,可以用 “请求数/秒” 来衡量。TPS(每秒事务数)是吞吐量的一个常用量化指标,此外还有HPS(每秒HTTP请求数)、QPS(每秒查询数)等。
三者关系
吞吐量(QPS/TPS)=并发数/平均响应时间
简而言之就是一个系统吞吐量通常有QPS(TPS),并发数两个因素决定,每套系统这个两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换,内存等等其他消耗导致系统处理性能下降,响应时间增加。
开始回答问题
在系统资源承受范围之内,吞吐量随系统的并发用户数的增加呈现增加趋势,也就是说你客户端来多少请求数系统吃(处理)多少请求数,对应的响应时间没有多大的变化波动;当超出系统资源承受范围时有两种情况:
一种是系统只能处理这么多,吞吐量趋近于一个定值,多余的请求拒绝掉(类似令牌桶或者限流算法处理),此时的响应时间也可以看成是一个定值,无多大波动。
还有一种情况是来者不拒,来啥接啥,最后导致系统吞吐量下降甚至系统崩溃,因为系统会为对应的请求都开辟单独的线程处理,当cpu资源大量用于处理线程上下文切换的时候,对应的线程业务处理都是wait状态,responseTime增加。
版权声明: 本文为 InfoQ 作者【一雄】的原创文章。
原文链接:【http://xie.infoq.cn/article/0a71ed8705363212d93954257】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论