要估算需要多少台机器来支持一个接口的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台机器。