【发布时间】:2016-02-06 10:29:37
【问题描述】:
我们的 Rails 4 应用程序在 thin -s 16 ... 多进程服务器中运行,Apache 作为前端,其反向代理处理内部请求。一切正常,性能对我们的用户数量来说还可以。
因为一切都是开箱即用的,所以我并没有真正关心 Thin 的实际工作原理。不过,我最近确实偶然发现了所有 Fibers 和 EventMachine 的优点,并阅读了很多。
Thin 正在使用 EventMachine 来处理 Rack 请求。因此,按照设计,它将能够与一个 ruby 进程并行处理多个请求。不幸的是,虽然 Thin 文档的功能足以让您在几分钟的工作中运行服务器,但内部工作却相当安静。
我是否正确假设一旦我使用 Rails 运行 Thin,所有关于“并发”的讨论都没有实际意义? ActiveRecord、数据库驱动程序、模板处理等可能没有启用 EM,不使用 Fibers 等,因此无论如何都会阻塞单个进程,同时在 DB-heavy 中使用大部分服务器端处理时间应用程序。
我所有的研究似乎都得出了这个结论;不幸的是,瘦网站/文档对此只字未提。坦率地说,我很困惑“并发”这个词怎么会出现在这里......
有人可以帮我解决这个问题吗?我是否遗漏了一些基本信息,或者http://code.macournoyer.com/thin/ 上吹捧的“并发”是指不使用 Rails 或其他“重型”中间件的手动制作的 Rack 服务器?
谢谢!
【问题讨论】:
标签: ruby-on-rails activerecord concurrency thin eventmachine