https://www.bilibili.com/video/BV1FS4y1o7QB 少年你需要看看这个讲解。首先你先预定某个接口的吞吐量,比如我希望这个服务 1 秒可以处理 5000 个请求(如: /getOrder ),qps=5000/s 。然后你的本地进行测试,就用你的那个笔记本电脑测试就可以了。不要用 jmeter 它对小白不友好,你可以用 apache 的 ab 或者用我视频给你的那个 nodejs 代码进行压测,比较专业,连接数设置 1500 即可 。
1 、然后你在测试的过程中,先通过调整线程池大小,比如 200, 400, 800, 1200 ,1500 ,然后再对比吞吐量的大小,就可以知道你的这个接口 运行多少线程数才能达到最大的吞吐量。如果你测试出来的结果是 2000/S ,那么就可以通过增加相同性能的机器数量 来达到 5000 的并发。
2 、至于你想知道性能瓶颈,其实非常的简单,性能的瓶颈 90%的情况就是在网络 IO 等待上,把所有网络 IO 的代码(比如请求 mysql ,调用微服务等)调整换成 redis 返回,你再进行压测,如果性能提升非常的大,那么就是在数据库上的瓶颈了,如果提升不大,那么就是你代码的问题。刚说了 90%的情况是在网络 IO ,数据库响应慢,那么 IO 也慢,就需要优化数据库了。
千万要注意:记住前面的几万次请求是热身运动,主要为了触发 jit ,后续的测试才是比较准确的性能表现。所以每次测试就先随便跑几万次,然后再进行 2-3 次压力测试,取平均值,一般都是相差不多的了。
不用盲目增加机器,你机器也许已经可以支持现有峰值的 4 倍都不一定,最简单就是看 cpu ,cpu 没满,说明很多的性能都没释放出来。cpu 长时间在 8-90%的情况下,才考虑增加机器。