如果 puma 的所有线程都在处理请求并发生新的连接尝试,会发生什么情况?



我习惯于使用node,在node中,进程将接受任何数量的传入连接。

Ruby和puma有什么不同?

使用puma,我需要定义线程数量:这个数量是否定义了服务器可以同时处理的最大请求数量?

如果:

  1. 我的服务器有长时间运行的请求
  2. 所有线程当前都在为请求提供服务

并且有新的请求传入?

插座会立即打开,但会一直坐着等待,直到有空闲的线程?套接字连接是否会暂停,直到出现空闲线程?或者线程可以处理多个请求?

这个数字是否定义了服务器可以同时处理的最大请求数?

这取决于Worker和Threads的数量。

最大请求数=Workers*Threads

如果在没有可用线程的情况下收到新请求会发生什么

它将被阻止,直到至少有一个可用的工作线程。

套接字是否立即打开,但等待有空闲线程?

是。

套接字连接是否会暂停,直到有空闲线程?

否。

启动后,Puma会监听TCP或UNIX套接字。彪马正在使用循环调度来调度一组工作人员和线程的请求。所以插座总是在彪马启动后打开。

或者线程可以处理多个请求?

否。

一个线程一次只能处理一个请求。

有关更多详细信息,您可以查看https://github.com/puma/puma/blob/master/docs/architecture.md

相关内容

  • 没有找到相关文章

最新更新