分享一下我的看法。很有意思,如果有时间,我感觉可以写一篇理论计算文章。不过我可以先去,stackoverflow, 看看能不能钓一篇其他人的分析.
空测试 localhost http 的瓶颈都在CPU。
为什么这样说,
1. localhost 的带宽的上限是内存的上限。
我们假设内存可以 20000m/s 的写入和读取。
localhost的一个RTT,我们假设1ms,那么带宽上限就是20000m/1ms = 20,000,000 m/s。
2. tcp 的滑动窗口
不是你带宽有多高,tcp就能发多快的。在开启 net.ipv4.tcp_window_scaling, 可以带到1GB。那么假设RTT 延迟 1ms。那么我们带宽上限就是
1024m/1ms = 1,024,000 m/s
所有我们得出,我们的带宽上限是 1,024,000 m/s
如果假设我们一个 http 的请求是 10kb,如果达到带宽上限,我们 qps 应该是 1,024,000 m/10kb = 100,024,000 /s. 天文数字。
3. 让我们假设我们 CPU 处理一个 socket 事件的时间是 1us(已经是很快了)
那么 1s 可以处理多少请求的呢, 1s/1us = 1,000,000 /s
空测试 localhost http 的瓶颈都在CPU。
![](https://img-home.csdnimg.cn/images/20240711042549.png)