首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >乘客不总是NonBlocking带铁轨吗?

乘客不总是NonBlocking带铁轨吗?
EN

Stack Overflow用户
提问于 2010-07-19 19:03:26
回答 1查看 311关注 0票数 0

乘客如何决定何时分叉一个新流程,我是否可以以任何有意义的方式配置它应该处理多少进程(配置中的“智能”和“保守”标志除外)?或者,有什么方法来调试在Phusion下运行的rails应用程序为什么会突然冻结呢?

背景:

我在Apache2服务器上使用Phusion乘客,而且在大多数情况下,一切都很好。我不太关心加载,而更关心的是阻塞:如果普通的mongrel碰到一个长控制器方法(比方说,一种睡眠时间为10秒的方法),那么普通的mongrel就会将整个应用程序捆绑在一起,在这个方法完成之前,没有其他网页可以使用。与乘客,我可以点击相同的方法,仍然打开一个新的浏览器,并点击更快的加载页面的同一应用程序没有任何问题。

有时候。

这“有时”是个问题。如果一个方法花费足够长的时间(在我的例子中,一个外部网络调用永远不会回来),整个应用程序将再次挂起,即使所有的线程分叉,或其他什么。

我的理解是,乘客的工作方式是,每次需要的时候,它都会把所有新的铁路实例分开,通常是在太多人同时连接的情况下。

它似乎适用于长方法,though...but我看不到任何关于如何或为什么(或者更重要的是,如何调整或配置这个过程)的引用。或者如何解决这个问题(我是否需要让Phusion分叉出更多的线程,它只是在一定时间内不适用于长的方法?)

EN

回答 1

Stack Overflow用户

发布于 2010-09-20 11:02:57

每当请求出现时,Phusion乘客决定将请求转发到哪个进程,并将该过程标记为繁忙。一旦该进程完成处理请求,它将被标记为非繁忙。

如果所有现有进程都被标记为繁忙,那么Phusion客运将生成一个新的进程,除非达到MaxPoolSize限制,在这种情况下,它将等待一个进程变得非繁忙。

你到底想定制什么?你所说的“冻结”到底是什么意思?您是指“慢Mongrel队列问题”吗?Phusion乘客有一个名为“全球排队”的功能,可以解决这个问题。问题以及它的解决方案是在Phusion乘客手册中的详细记录,并且由于版本3.0.0 beta,这个选项是默认打开的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3284140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档