gpt4 book ai didi

ruby - 从 Rails 3.0 升级到 Rails 3.2(Ruby 1.9.3 + Passenger)后出现巨大的内存泄漏/膨胀

转载 作者:数据小太阳 更新时间:2023-10-29 06:55:07 25 4
gpt4 key购买 nike

上周我们将一个在 Rails 3.0.1 上运行的小项目升级到了 Rails 3.2.2。

升级后不久,我们发现偶尔,一天 2-3 次,我们会看到一个巨大的 Phusion Passenger 进程 (1-5 GB)。

我们正在运行 Phusion Passenger 3.0.11 和 Ruby 1.9.3-p0。我们已经尝试了不同的 Ruby 版本(1.9.2-p290 和 1.9.3-p125)但没有成功。

之后,我们尝试使用 Oink 来跟踪我们的内存使用情况.不幸的是,Oink 没有显示内存膨胀的原因——大型进程似乎不再写入日志文件。

当我们降级回 Rails 3.0.1 时,问题就消失了。有没有人有类似的问题?我们确实检查了我们的代码是否存在可能的内存泄漏,例如太多的 ActiveRecord 实例,但没有发现任何问题。

您认为尝试 Unicorn 而不是 Passenger 值得吗?还是我们可能会遇到同样的问题?

欢迎就如何跟踪内存泄漏提出任何建议。我们已经设置了 newrelic,但它没有显示有关内存泄漏的详细信息。

最佳答案

如果这是与 Red Hat 兼容的 Linux,您可以使用 SystemTap。我不确定 SystemTap 在 Debian/Ubuntu 系统上是否可用,如果没有,则有称为 DTrace 的替代方案。这里有一些文章——我已经非常成功地追踪了几次回归,尽管这些都不是内存问题(也许你可以找到一个 STP 脚本来解决这个问题)。在这里阅读:

http://lukas.zapletalovi.com/2012/02/peek-into-your-ruby-app-with-systemtap.html http://lukas.zapletalovi.com/2012/01/probing-ruby-apps-with-systemtap-in.html http://sourceware.org/systemtap/wiki/RubyMarker

最后一个链接显示了您可以在 Ruby 的 SystemTaps 中加入的探测器。有像 gc 运行或内存分配这样的想法,可以帮助你。祝你好运!

关于ruby - 从 Rails 3.0 升级到 Rails 3.2(Ruby 1.9.3 + Passenger)后出现巨大的内存泄漏/膨胀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9500083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com