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

恒温 for 求职面试圈 · 2018年04月11日 · 最后由 恒温 回复于 2023年10月23日 · 3251 次阅读

如图!

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

并发线程 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 恒定....响应时间随时间增长😂

挖个坟 @Lihuazhang 大佬五年后看到这题的答案有没有什么变化

Seven 回复

……我都不记得为啥了

恒温 回复

我现在就出现这个问题 无论我压多少线程 tps 一直稳定 然后响应时间随线程数增高而增高 刚接触 不懂咋分析

Seven 回复

看看网关侧的 rt 时间。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册