假设单台机器 16core, 单次请求 1s, 是不是代表着服务器的最大 QPS 是 16?
(puma + MRI)
@42thcoder 比如puma workers: 8, threads: 16
puma workers: 8, threads: 16
假设内部逻辑最简单的算: sleep 1
sleep 1
应该是低于 16,并发的时候,1s 的响应速度可能会变成 1.5s
这个要分析你请求的 1s 是怎么组成的,如果 db 900ms 程序 100ms 你还要分析多并发的情况下 db 的时间会不会增加
这种情况下:那就不能说直接改成jruby能提高并发量了。
jruby
io wait 通过增加线程可以增加 qps,db 属于 io wait,sleep 好像也可以利用线程。
Threads (in Ruby): Enough Already http://yehudakatz.com/2010/08/14/threads-in-ruby-enough-already/
workers 8 threads 16 不是会产生 128 线程吗?
如果你真的只配置总共 16 线程并且每个请求真的要花掉 1 秒的话,是的最多 16qps。
所以实际运行中,这么慢的请求不会配置这么少线程的。