写点什么

使用 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:30448

评论

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

产品经理训练营第0期-第三次作业

孙行者

第0期 产品经理训练营 问题

厚积薄发!华为云7篇论文被AAAI收录,2021年AI行业技术风向标看这里!

华为云开发者社区

人工智能 卷积网络 远程监督 域泛化 油气储集层收集

产品训练营 第三次作业

Wangyunnfei

MySQL安装教程&问题解决

Mars

MySQL 运维

Idea工具的各种查找快捷键

小马哥

IntelliJ IDEA 七日更 2月春节不断更

ModelArts AI Gallery与HiLens Kit联合开发丨行人社交距离风险提示Demo

华为云开发者社区

华为云 modelarts hilens 行人 社交距离

挖矿区块链_什么是挖矿 带你详细了解挖矿基础知识

v16629866266

使用pgBackRest并行归档解决wal堆积问题

PostgreSQLChina

数据库 postgresql 开源 开源社区

ICE暴雪正悄悄崛起

DT极客

Kafka基础简介

架构精进之路

kafka 七日更 28天写作 2月春节不断更

EXCEL数据如何去重? Python:这事我比你熟

智分析

Python

第三章:产品解决方案作业

让时间说真话

产品经理

史上最清晰的Tarjan算法详解

华为云开发者社区

算法 静态分析 语法树 Tarjan 数据流

Elasticsearch 写一致性原理

escray

七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

说说常常被研发忽略的原型模式

后台技术汇

28天写作 2月春节不断更

用RabbitMQ了好几年之后,我总结出来5点RabbitMQ的使用心得

四猿外

MQ RabbitMQ 消息队列

玩转IDEA项目结构Project Structure,打Jar包、模块/依赖管理全搞定

YourBatman

Module IntelliJ IDEA Project Structure

OpenAI将k8s扩展至7500个节点以支持机器学习;Graph Diffusion Network提升交通流量预测精度

京东科技开发者

区块链 开源

前端面试必备ES6全方位总结

魔王哪吒

程序员 面试 前端 ES6 2月春节不断更

华为云FusionInsight助力宇宙行打造金融数据湖新标杆

华为云开发者社区

数据湖 云原生 存储 FusionInsight 华为云

数据库表数据量大读写缓慢如何优化(4)【分库分表】

我爱娃哈哈😍

数据库 架构·

程序员成长第一篇:机会与趋势

石云升

28天写作 2月春节不断更 机会与趋势

利用 Python 分析了某化妆品企业的销售情况,我得出的结论是?

JackTian

Python 数据分析 数据可视化 化妆品 2月春节不断更

挖矿系统APP源码搭建

luluhulian

官宣了!Apache ECharts 毕业成为 Apache 软件基金会顶级项目!

百度Geek说

百度 基金会

托管节点池助力用户构建稳定自愈的 Kubernetes 集群

阿里巴巴云原生

Docker 容器 运维 云原生 k8s

SpringCloud 从入门到精通15---Sentinel搭建和服务监控

Felix

日记 2021年2月2日(周二)

Changing Lin

个人感悟 2月春节不断更

重点人员动态管控系统开发,智慧公安平台搭建解决方案

WX13823153201

重点人员动态管控系统开发

即构自研海量有序数据网络MSDN,构建全球可靠的多云通讯链路

ZEGO即构

即日起 Jira、Confluence 正式停售本地版,中国客户将无法购买

万事ONES

项目管理 开发者 研发管理 团队协作 CTO

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

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