新手问题 对于 Rails 的 QPS 疑问

zealinux · 2017年12月29日 · 最后由 msg7086 回复于 2017年12月30日 · 1834 次阅读

假设单台机器 16core, 单次请求 1s, 是不是代表着服务器的最大 QPS 是 16?

(puma + MRI)

  • 要看 puma 的配置
  • 要看单次请求 1s,请求内部具体逻辑

@42thcoder 比如puma workers: 8, threads: 16

假设内部逻辑最简单的算: sleep 1

应该是低于 16,并发的时候,1s 的响应速度可能会变成 1.5s

这个要分析你请求的 1s 是怎么组成的,如果 db 900ms 程序 100ms 你还要分析多并发的情况下 db 的时间会不会增加

这种情况下:那就不能说直接改成jruby能提高并发量了。

io wait 通过增加线程可以增加 qps,db 属于 io wait,sleep 好像也可以利用线程。

workers 8 threads 16 不是会产生 128 线程吗?

如果你真的只配置总共 16 线程并且每个请求真的要花掉 1 秒的话,是的最多 16qps。

所以实际运行中,这么慢的请求不会配置这么少线程的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号