我们的Rails 4应用程序在一个thin -s 16 ...
多进程服务器中运行,其中Apache作为前端,其反向代理处理内部请求。一切正常,我们的用户数量表现还可以。
因为一切都是开箱即用的,所以我并没有真正理解Thin实际上是如何运作的。我最近偶然发现了所有Fibers和EventMachine的好处,并且阅读了很多内容。
Thin正在使用EventMachine处理Rack请求。因此,通过设计,它将能够与一个ruby进程并行处理多个请求。不幸的是,虽然Thin文档功能足以使您能够在几分钟内运行服务器。值得工作,内部工作相当安静。
我是否正确地假设所有人都在谈论"并发"一旦我用Rails运行Thin就没有实际意义吗? ActiveRecord,数据库驱动程序,模板处理等可能不启用EM,不使用光纤等,因此无论如何都会阻止单个进程,同时在DB-heavy中使用大部分服务器端处理时间应用
我的所有研究似乎都得出了这个结论;不幸的是,Thin网站/文档对此一无所知。坦率地说,我感到困惑的是"并发"甚至在这里进入图片......
有人可以为我清楚吗?我错过了一些基本的信息,或者是"并发"吹嘘http://code.macournoyer.com/thin/意味着手动制作的机架式服务器不使用Rails或其他重型的#34;中间件?
谢谢!
答案 0 :(得分:0)
你是对的,当使用Rails时它不会是并发的。对db驱动程序/文件系统的任何调用都将阻止整个ruby解释器。它可能在Rails 5中被部分更改,但是现在你只需要运行很多工作进程。