先去确认这些参数的前提:

  • 业务目标是1万的QPS, 也就是说每秒钟是不是要去扛住1万个请求?
  • , 请求500ms, 是不是IO密集型任务里面, 其中涉不涉及到CPU密集型计算
  • 这个服务器的配置是怎么样的, (我们可以假设是8C16G)

把500ms分解成混合性任务, 有权限、参数的校验是一个短时间的CPU计算, 然后去查数据库或者是调远程的微服务, 这是一个长IO的操作。

建议线程池与CPU核心数一致的, 为8个。尽可能用更多的线程来去填补IO的等待, 让CPU不空闲, 比如我们的响应耗时是500ms, 我们去拆解之后可以去拆解出50msCPU执行任务, 然后450ms可以去处理这个IO密集型任务。

500ms = 50ms(cpu耗时) + 450ms(io耗时)

cpu核心数 * (1 + IO等待时间 / CPU计算时间)

8 * (1 + 450 / 50) = 80(线程)
  • 单机最大QPS:80线程 * (1000ms/500ms) = 160 QPS

  • 理论机器数:1000QPS / 160QPS = 63 台

  • 实际机器数:63 / 0.7 = 90 台

保持cpu最高是70%负载。

作者:张三  创建时间:2025-11-14 21:40
最后编辑:张三  更新时间:2025-11-14 21:41