职业经验 # 每日一道面试题 # 当线程和 tps 恒定的时候,为啥响应时间在增加?

恒温 for 求职面试圈 · April 11, 2018 · Last by 心向东 replied at April 12, 2018 · 2101 hits

如图!

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 6 条回复 时间 点赞

并发线程2000,tps吞吐量只有300,说明线程处理一定在排队。
排队原因很多:可能是资源限制(线程排队过多,导致上下文切换较多),可能是连接数限制等等
响应时间越来越长的原因:
第一秒,处理了300,排队1700,响应时间 = 处理时间1秒;
第二秒,处理了300,排队1700-300+300,响应时间=处理时间1秒 + 等待时间1秒 = 2秒;
以此类推。。。。

跟排队一个道理,处理速度恒定,但是刚开始堆积了很多人,刚开始去的那批人,等待时间会越来越长,但是到后面时间会趋于稳定2000/300约为6.6秒;

首先明确的是线程是压力生成器,实际上是客户端,TPS是指服务器每秒处理能力。
分情况来看:

  1. 如果压力生成是2000个线程,那么客户端每秒产生的请求应该会超过2000个,而服务器TPS只有300,那么多出来的请求只能等待,这个时候客户端请求越积越多,从客户端的角度看响应时间就越来越长,因为排队等待处理的时间也计算在响应时间内;这个情况可能说明不了什么问题,可能系统就是这个设计的,可能就是个限流的设计,等待请求如果超过一定时间直接多超时返回,甚至说到了一定响应时间,如果这个响应时间大于客户端请求的超时时间,响应时间可能就不增加了
  2. 如果并发线程数和TPS300 比较接近甚至更少时,那么响应时间的增加应该不会很陡峭,如果增加很厉害或者波动很大时,那么需要仔细查看其他的指标了,比如SQL,内存使用的情况,GC频率是不是很高,是不是有报异常等等了

某些资源存在泄漏,一般为内存,文件句柄 或数据库连接

1-3楼都偏题了.....人家问的是线程 tps恒定....响应时间随时间增长😂

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up