Rails应用程序(mod_rails)每隔几个小时挂起一次

时间:2009-10-25 00:15:22

标签: ruby-on-rails passenger

我正在通过Phusion Passenger(mod_rails)运行Rails应用程序,该应用程序将平稳运行一段时间,然后突然慢慢爬行(每小时一两个请求)并变得无法响应。尽管我不确定内存,但整个考验期间的CPU使用率都很低。

有谁知道我应该从哪里开始诊断/解决问题?

更新:现在重新启动应用程序然后解决问题,尽管我正在寻找更长期的解决方案。内存使用率逐渐增加(最初每个实例约30mb,一小时后变为40mb,崩溃时达到60或70mb)。

3 个答案:

答案 0 :(得分:1)

如果重新启动应用程序可以解决问题,那么查看其资源使用情况将是一个很好的起点。

答案 1 :(得分:1)

New Relic可以显示组合的内存使用情况。 Engine Yard推荐使用Rack :: Bug,MemoryLogic或Oink等工具。这是一个很好的article类似于你可能会觉得有用的东西。

答案 2 :(得分:0)

听起来你有某种内存泄漏。如果你想对这个问题进行限制,你可以尝试将PassengerMaxRequests设置得低一些,直到你弄清楚发生了什么。

http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerMaxRequests

这将在他们提供一定数量的请求后,单独重新启动您的实例。您可能不得不摆弄它以找到他们在锁定之前自动重新启动的最佳位置。

其他提示是: - 浏览你的插件/宝石,确保它们是最新的 - 检查有大量内存消耗的繁重操作和请求(NewRelic对此非常有用) - 你可能想考虑切换到REE,因为它有更好的垃圾收集

最后,您可能希望设置一个cron作业,该作业会查看当前正在运行的乘客实例,如果超过某个内存阈值则会将其杀死。乘客将处理重新启动它们。