科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件使用BleakHouse发现Rails应用的内存泄漏

使用BleakHouse发现Rails应用的内存泄漏

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Rails的插件BleakHouse是用来处理内存问题。BleakHouse使用的是一个无泄漏的C语言实现,直接使用堆,其优势是目前可以直接根据实际内存使用量画出图表(交换内存、实际内存和组合内存),并且比以前运行得更快。

作者:Sam Aaron/Jason Lai编译 来源:InfoQ  2007年9月13日

关键字: BleakHouse Rails 内存泄漏

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共19页)

尽管Rails的敏捷性从来没有人质疑过,但它的性能却常常是人们争论的热点。

DTrace是由Twitter团队近期提供的一个很好用的分析应用程序行为的动态框架。另外,Evan Weaver开发了一个新的工具,Rails的插件BleakHouse,用来处理内存问题。像Ruby这样的动态语言所具备的优势之一就是其内省(Introspect)的能力:在应用程序的内部就可以检查你应用程序的状态,但是大家在使用ObjectSpace(Ruby被垃圾收集的对象堆探测器)时应当多加留心。诚然,BleakHouse在最初的版本使用了ObjectSpace对Rails应用进行快照,但Evan Weaver发现ObjectSpace并不是量子化的:使用ObjectSpace将会改变它自己的状态。

目前,BleakHouse使用的是一个无泄漏的C语言实现,直接使用堆,其优势是目前可以直接根据实际内存使用量画出图表(交换内存、实际内存和组合内存),并且比以前运行得更快。

它可以按控制器、Action和类来生成参考图表。

BleakHouse要用到gruff(因此也要用到rmagick)。由于它是用C语言实现的,它还需要一个打了补丁的Ruby二进制文件来监视应用程序。一旦插件安装完成并且环境被设置为产品环境(Production)时,你就可以跟踪你的应用了。最后,你可以通过运行rake来生成这些图表。

图1
图2
图3

BleakHouse提醒过Charles Nutter关于使Ruby更为好用的第五条建议:把ObjectSpace丢在一边,尤其是当人们最终必须通过对VM打补丁的方式来进行监视的时候:

由于限制了Ruby的垃圾回收机制和线程子系统,ObjectSpace给Ruby带来损害,因此应当弃之不用。

Java有不少高效的堆分析工具,你可能会想,用于Ruby的RProbe和RProfiler在哪儿呢?我认为,随着时间的增长,新的VM被引入,并且更多的公司参与进来,这样的工具最终会出现在人们面前的……

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章