2011-09-23 54 views
2

几个Ruby的应用程序,我用挂在电话较慢导致最终需要重新启动机器上的进程备份工作了很长一段时间。 Passenger中是否有一种快速简单的方法来限制单个Apache呼叫的执行时间。红宝石mod_passenger过程超时

在PHP如果一个进程超出了最大执行时间在php.ini的处理设置错误返回给Apache和服务器保持欢快地埋头苦干。

+2

不能帮你的乘客,只是检查,并不能找到乘客文档的任何选项。我们使用nginx +独角兽,它支持超时。安装起来有点复杂,但有一些优点。例如独角兽别闲着出像乘客工人(然后需要重新启动,这会导致响应时间长一些用户) –

回答

0

我想看看固定的应用。在网络服务器级别切断请求实际上更像是一种乐队帮助,而不是解决核心问题 - 这就是请求失败。如果红宝石的应用程序是依赖于已超时其他的服务,您可以修补这样的代码,使用timeout.rb库:

require 'timeout' 
status = Timeout::timeout(5) { 
    # Something that should be interrupted if it takes too much time... 
} 

这将让代码“放弃”,并关闭了该请求优雅地在需要时。

+0

,但照顾,timout不是线程安全的... – Lichtamberg