Ruby mod_passenger进程超时

时间:2011-09-23 15:37:22

标签: ruby-on-rails ruby apache2 passenger

我使用过的一些Ruby应用程序在慢速调用时挂了很长时间,导致进程在机器上进行备份,最终需要重启。在Passenger中是否有一种快速简便的方法来限制单个Apache调用的执行时间。

在PHP中,如果某个进程超过了php.ini中的最大执行时间设置,则该进程会向Apache返回一个错误,并且服务器会保持快速插入。

1 个答案:

答案 0 :(得分:0)

我会看一下修复应用程序。在Web服务器级别切断请求实际上更像是一个频段辅助而不是解决核心问题 - 这就是请求失败,无论如何。如果Ruby应用程序依赖于另一个超时服务,您可以使用timeout.rb库修补这样的代码:

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

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