扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者: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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者