我使用 ruby on Rails 编写了一个小型 Web 应用程序,其主要目的是上传、存储和显示 xml(文件最多可达几 MB)文件的结果。运行大约 2 个月后,我注意到杂种进程使用了大约 4GB 内存。我做了一些关于调试 ruby 内存泄漏的研究,但没有找到太多。所以我有两个问题。
- 有没有什么好的工具可以用来查找 Ruby/rails 中的内存泄漏?
- 哪些类型的编码模式会导致 ruby 中的内存泄漏?
在 Rails 中查找内存泄漏的一些技巧:
- use the 荒凉山庄 http://www.rubyinside.com/bleakhouse-tool-to-find-memory-leaks-in-your-rails-applications-470.html plugin
- 实施侦察监控 https://scoutapm.com/特别是内存使用分析器
- 尝试另一个简单的内存使用记录器 https://github.com/binarylogic/memorylogic/tree/master
第一个是对象空间中对象的内存使用情况的图形探索。
最后两个将帮助您识别导致内存使用量增加的特定使用模式,您可以从那里开始工作。
至于特定的编码模式,根据经验,您必须观察处理文件 io、图像处理、处理大量字符串等的内容。
我会检查您是否正在使用最合适的 XML 库 - ReXML 众所周知很慢并且被认为存在泄漏(我没有证据证明这一点!)。另外检查一下是否可以memoize https://web.archive.org/web/20160418141426/http://unintelligible.org/blog/2007/08/16/one-line-ruby-memoization/昂贵的操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)