【问题标题】:How does Rails handle concurrent request on the different servers?Rails 如何处理不同服务器上的并发请求?
【发布时间】:2012-05-09 03:04:05
【问题描述】:

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

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

基本上我很好奇:

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

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

【问题讨论】:

  • Rails 在这方面完全没有做任何事情,也不关心它。这完全取决于所使用的服务器。

标签: ruby-on-rails ruby ruby-on-rails-3 passenger webrick


【解决方案1】:

有些使用worker(apache、phusion、unicorn),有些则不使用。如果你不 使用工人,这真的取决于你的应用程序在哪里是线程安全的 或不。如果您是,一次可能会处理多个请求, 否则会有Rack::Lock 阻止它。如果有工人 (单独的进程),他们每个人都做一个请求然后返回 主服务器为其分配新请求的池。 Read on

【讨论】:

    猜你喜欢
    • 2015-08-08
    • 2013-10-02
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 2017-11-13
    相关资源
    最近更新 更多