4

以前有人问过这个问题,但从未特别详尽地回答过。

假设您在支持它的几个 Web 服务器之一上运行 Rails,例如 WEBrick、Mongrel、Apache 和 Nginx(通过Passenger Phusion)。服务器收到两个并发的 GET,会发生什么?这在任何地方都有明确记录吗?

基本上我很好奇:

  • 服务器每次都创建一个新实例或rails吗?
  • 它是否以某种方式尝试重用现有实例(其中已加载 Rails 的 ruby​​ 进程?)来处理请求?
  • 启动一个新的 ruby​​ 进程并在其中重新加载 Rails 不是很慢吗?

谢谢!任何指向详尽说明的链接将不胜感激。

4

1 回答 1

0

有些使用工人(apache、phusion、独角兽),有些则不使用。如果您不使用工作程序,这实际上取决于您的应用程序是否是线程安全的。如果是,则一次可能会处理多个请求,否则Rack::Lock会阻止该请求。如果有工作人员(单独的进程),他们每个人都会发出一个请求,然后返回到池中,在那里主服务器为其分配一个新请求。继续阅读

于 2012-04-28T18:27:29.317 回答