我使用 ruby on rails 编写了一个小型 Web 应用程序,它的主要目的是上传、存储和显示来自 xml(文件最多几 MB)文件的结果。运行大约 2 个月后,我注意到 mongrel 进程使用了大约 4GB 的内存。我对调试 ruby 内存泄漏进行了一些研究,但找不到太多。所以我有两个问题。
- 有没有什么好的工具可以用来查找 Ruby/rails 中的内存泄漏?
- 什么类型的编码模式会导致 ruby 中的内存泄漏?
最佳答案
在 Rails 中查找内存泄漏的一些技巧:
- 使用 Bleak House插件
- 实现 Scout monitoring特别是内存使用分析器
- 尝试另一个 simple memory usage logger
第一个是对 ObjectSpace 中对象的内存使用情况的图形探索。
最后两个将帮助您识别导致内存使用量膨胀的特定使用模式,您可以从那里开始工作。
至于特定的编码模式,根据经验,您必须观察处理文件 io、图像处理、处理大量字符串等的任何内容。
我会检查您是否使用了最合适的 XML 库 - 众所周知,ReXML 很慢并且被认为是泄漏的(我没有证据!)。还要检查您是否可以memoize昂贵的操作。
关于ruby-on-rails - ruby/ruby on rails 内存泄漏检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/161315/