Skip to content

面试速答(先看这里)

**一句话结论:**要估算需要多少台机器来支持一个接口的QPS和RT,需要考虑多个因素,包括机器的性能、并发连接数、负载均衡、缓存等。

60秒标准回答:

要估算需要多少台机器来支持一个接口的QPS和RT,需要考虑多个因素,包括机器的性能、并发连接数、负载均衡、缓存等

如果接口RT为200ms,那么我们可以计算知道,单台机器单个线程一秒钟的吞吐量

单线程吞吐量 = 1000ms / RT

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**如果接口RT为200ms,那么我们可以计算知道,单台机器单个线程一秒钟的吞吐量:
  • **要点2:**单线程吞吐量 = 1000ms / RT
  • **要点3:**单线程吞吐量 = 1000ms / 200ms = 5请求/秒
  • **要点4:**那么,假设我们的web服务器是tomcat,默认有200个线程,那么他一秒钟的吞吐量就要再乘以200(单核情况下理论极限):
  • **要点5:**那么,根据这个吞吐量来计算的话,如果要抗3000的QPS,那么就需要:

**记忆锚点:**QPS → CPU → 一个接口3000QPS → 示每台机器的每个线程 → 单台机器单个线程 → tomcat

关键取舍:

  • 要估算需要多少台机器来支持一个接口的QPS和RT,需要考虑多个因素,包括机器的性能、并发连接数、负载均衡、缓存等。

加分表达:

  • 如果接口RT为200ms,那么我们可以计算知道,单台机器单个线程一秒钟的吞吐量: 单线程吞吐量 = 1000ms / RT 单线程吞吐量 = 1000ms / 200ms = 5请求/秒 这表示每台机器的每个线程每秒最多可以同时处理5个请求。
  • 那么,假设我们的web服务器是tomcat,默认有200个线程,那么他一秒钟的吞吐量就要再乘以200(单核情况下理论极限): 单机吞吐量:5 * 200 = 1000 那么,根据这个吞吐量来计算的话,如果要抗3000的QPS,那么就需要: 3000/1000 = 3台机器。

追问准备:

  • 围绕「QPS」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「CPU」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「一个接口3000QPS」:底层原理是什么?使用时有哪些边界和常见坑?
  • 如果线上出现异常,你会如何定位、验证并规避?

典型回答 ​

要估算需要多少台机器来支持一个接口的QPS和RT,需要考虑多个因素,包括机器的性能、并发连接数、负载均衡、缓存等。

如果接口RT为200ms,那么我们可以计算知道,单台机器单个线程一秒钟的吞吐量:

单线程吞吐量 = 1000ms / RT

单线程吞吐量 = 1000ms / 200ms = 5请求/秒

这表示每台机器的每个线程每秒最多可以同时处理5个请求。

那么,假设我们的web服务器是tomcat,默认有200个线程,那么他一秒钟的吞吐量就要再乘以200(单核情况下理论极限):

单机吞吐量:5 * 200 = 1000

那么,根据这个吞吐量来计算的话,如果要抗3000的QPS,那么就需要:

3000/1000 = 3台机器。

但是,以上这个计算完全理想化了,完全忽略了CPU、内存、Load等硬件的情况。因为随着并发量的升高,应用的CPU、内存、磁盘等等各种硬件配置的使用情况也是在不断攀升的。

所以实际在预估的时候,需要在单机上进行压测,根据压测结果来预估需要多少台机器。

📄 ✅什么是压测,怎么做压测?

打开文档:✅什么是压测,怎么做压测?

最理想的情况是需要3台机器,但是实际情况的话基本上会比这个要多一些,所以大致预估就是按照他的2-3倍来算的话,就是6-9台机器。