我习惯于使用node,在node中,进程将接受任何数量的传入连接。
Ruby和puma有什么不同?
使用puma,我需要定义线程数量:这个数量是否定义了服务器可以同时处理的最大请求数量?
如果:
- 我的服务器有长时间运行的请求
- 所有线程当前都在为请求提供服务
并且有新的请求传入?
插座会立即打开,但会一直坐着等待,直到有空闲的线程?套接字连接是否会暂停,直到出现空闲线程?或者线程可以处理多个请求?
这个数字是否定义了服务器可以同时处理的最大请求数?
这取决于Worker和Threads的数量。
最大请求数=Workers*Threads
如果在没有可用线程的情况下收到新请求会发生什么
它将被阻止,直到至少有一个可用的工作线程。
套接字是否立即打开,但等待有空闲线程?
是。
套接字连接是否会暂停,直到有空闲线程?
否。
启动后,Puma会监听TCP或UNIX套接字。彪马正在使用循环调度来调度一组工作人员和线程的请求。所以插座总是在彪马启动后打开。
或者线程可以处理多个请求?
否。
一个线程一次只能处理一个请求。
有关更多详细信息,您可以查看https://github.com/puma/puma/blob/master/docs/architecture.md