如果我们用 RPM(每分钟请求量)来衡量吞吐量,我们可以用这个公式来计算阻塞 IO web server 的最大吞吐量:
假设我们 web server 的平均响应时间是 150ms,一个容器里有 2 个进程,每个进程有 5 个线程,那么
假设我们依赖的外部服务不可用,导致请求超时,而且我们没设置请求超时时间,惨。导致关键 API 变得很慢,外部服务的响应时间甚至达到了 30-60s。 这时假设平均响应时间从 150ms 变为 10s,那么
最终这个慢 API 导致我们的 RPM 从 2m 变成 30k,接着用户体验会变得很糟糕,第 30000 个之后的请求都会被放到请求队列中,请求积累的越来越多,大部分请求还在排队时,就已经超时了。用户在 app 只能看到加载动画或者错误。