1

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

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

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

4

3 回答 3

1

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

于 2009-10-25T01:27:44.063 回答
1

New Relic 可以显示组合的内存使用情况。Engine Yard 推荐使用 Rack::Bug、MemoryLogic 或 Oink 等工具。这是一篇不错的文章,介绍了您可能会发现有用的类似内容。

于 2009-10-25T15:33:59.180 回答
0

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

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

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

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

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

于 2009-10-27T17:21:51.900 回答