写点什么

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

2007 年 5 月 15 日

尽管 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 来生成这些图表。

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

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

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

查看英文原文: Find Memory Leaks in Your Rails Application with BleakHouse

2007 年 5 月 15 日 19:30430

评论

发布
暂无评论
发现更多内容

起伏激荡的以太网,抱上这条大腿才能乘风破浪

脑极体

消息队列面试热点一锅端

yes的练级攻略

kafka RocketMQ 面试题 消息队列

1.8w字 | 初中级前端 JavaScript 自测清单 - 2

pingan8787

Java 前端 web前端

大厂的人才衡量标准

池建强

人才标准

架构师训练营第9周

大丁💸💵💴💶🚀🐟

Atlassian 重磅推出12个新功能为您打造全新 DevOps 体验!

Atlassian速递

项目管理 DevOps Atlassian Jira

秒杀系统的架构设计

莫莫大人

应用开发基础知识-文件系统

superman

文件系统

垃圾回收

Mr.Monkey

第九周总结

andy

秒杀系统的挑战和应对方案

2流程序员

LeetCode题解:189. 旋转数组,3次翻转,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

总结

chenzt

百度安全研究院:区块链智能合约介绍

百度安全

比特币 区块链 智能合约 以太坊

架构训练营第九周作业

张锐

当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮

鄙人薛某

Java 面试 集合 面试题 java基础

关于微信电子发票生态,这三种服务商最有机会

诸葛小猿

电子发票 发票

HomeWork

天之彼方

Kafka集群缩容实战

大数据学徒

大数据 kafka 运维 Big Data

JVM 垃圾回收原理

周冬辉

微服务架构下的核心话题 (一):微服务架构下各类项目的顺势崛起

xcbeyond

架构 微服务

第9周总结+作业

林毋梦

秒杀系统设计初稿

jason

JVM学习总结

jason

【第九周作业】

Aldaron

架构师训练营第九章作业

叮叮董董

架构师训练营第九章总结

叮叮董董

架构师训练营 - 第九周 - 作业

韩挺

前端面试 vue 部分 (2)——Vue是如何实现双向绑定的

dd多了个多

Vue Web 前端开发 前端面试

第九周作业

andy

极客大学

Elasticsearch从入门到放弃:瞎说Mapping

Jackey

elasticsearch

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