发布在即!企业 AIGC 应用程度测评,3 步定制专属评估报告。抢首批测评权益>>> 了解详情
写点什么

监视 Ruby 程序运行

  • 2007-12-18
  • 本文字数:1227 字

    阅读完需:约 4 分钟

在最近一次对Philippe Hanrigou 的采访中,讨论了关于Ruby 监视和故障分析方面的议题。Philippe Hanrigou 指出,为什么在Ruby 进程中断时,会有内存泄漏或者其他性能问题产生,这对于保持应用良好运行来说是很关键的问题。快速解决问题比认识到问题显得更为重要,特别是当一个业务服务碰到了问题,并且这个问题正在影响业务进程的时候。

相比基础的Unix 工具,例如gdb 或者strace(用于显示程序调用另外一个程序的syscall), DTrace是一个具有潜力并且很有用的工具。DTrace 起初是为 Solaris 开发的工具,允许低负载的对程序进行性能监控和跟踪。后来 DTrace 被迁移到其他操作系统上,最近迁移到了 Mac OS X Leopard,该操作系统中的 DTrace 支持 Ruby 解释器

Philippe 对 Linux 系统给出了一个建议的解决方案,目前 DTrace 不支持 Linux:

对于大多数社区的核心成员来说,值得付出时间和精力来推动 SystemTap 的前进。不幸的是,虽然有许多 Ruby 应用部署在 Linux 上,但 DTrace 并不支持 Linux 平台。由于许可证和其他没有解决的问题,实际上在可以预见的将来,把 DTrace 迁移到 Linux 平台上的可能性十分渺茫。在 Linux 上最接近于 DTrace 的代替者是 SystemTap,SystemTap 与 DTrace 的目的是一样的,然而不像 DTrace 那么成熟。实际上,对于用户空间运行程序的跟踪,SystemTap 仍然没有提供支持。

JRuby上运行 Ruby 应用,使得开发者可以使用在 Java 平台上的那些性能监控监视工具。 Ola Bini 在前些日子的一篇题目为"你的Ruby 可以做这个么"博客文章中提出了这个看法,文中他使用 JConsole(随 JDK 一起发行)来深入查看一个 JRuby 应用的运行情况。JConsole 可以附加在一个运行的 JVM 上 —— 使用 JMX—— 访问例如垃圾收集信息(generation sizes,collection runs 等),以及线程信息和所有其他通过 MBeans 暴露的信息。Philippe 还提到了其他用于处理内存泄漏的工具: > 最终,当发生了内存泄漏时,常用的 Java 工具也可以帮忙解决问题。一个有用的技术是使用 jmap 得到堆信息,然后用 jhat 或者其他标准的 Java 堆信息分析器来检查堆信息。SAP 的内存分析器(SAP Memory Analyzer)也值得一试,Ola 认为这些工具非常有用。

在 InfoQ 站点,最近对SAP 或IBM 的免费的内存分析器进行了一些讨论。 Philippe 最后表示他对 Rubinius很感兴趣:

如果 Ruby 开发者可以容易的访问 Ruby 解释器,从而使用并扩展它的功能,那么最终构建一个 Ruby 的故障分析工具会简单很多。这就是为什么我认为象 Rubinius 这样的项目的成功从长期来看是将整个 Ruby 开发平台提升到一个新的高度的最佳方式。开发社区在 Rubinius 上投入多少时间和精力都是值得的。

查看英文原文 Monitoring Ruby - - - - - -

译者简介: 曹云飞,西安交通大学计算机软件硕士。现就职于 Ethos ,热衷于计算机理论与应用技术的钻研,软件架构与敏捷开发,目前从事 consumer product 方面的工作。参与 InfoQ 中文站内容建设,请邮件至 china-editorial[at]infoq.com

2007-12-18 08:16949
用户头像

发布了 47 篇内容, 共 98915 次阅读, 收获喜欢 3 次。

关注

评论

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

时间戳——区块链不可篡改特性的重中之重

CECBC

区块链

2021你好 | 一名五道口程序员的年终总结

herongwei

程序员 职场 自媒体 年终总结 新年

数据爬虫

RainGod

爬虫

从考研失败到最具成长力员工,这个2020就像过山车一样

Java鱼仔

程序员 面试 程序人生 考研

架构师训练营第十一周作业

李日盛

上地七街

潇潇雨歇

【计算机内功修炼】二:读取文件时,程序经历了什么

码农的荒岛求生

后端 文件 操作系统 进程 线程’

架构师大作业

_

大作业 架构师训练营第 1 期

架构师训练营第十一周笔记

李日盛

笔记

区块链游戏开发注意事项

CECBC

区块链 区块链游戏

一次线上cpu过高问题

kcnf

架构师训练营第十一周作业

丁乐洪

架构师训练营—大作业(一)

Geek_shu1988

架构入门感悟之十一

笑春风

交报告 | 2020年读完的50本书

浪亦有道

RocketMQ避坑指南:你部署的RocketMQ集群真的是高可用?

中间件兴趣圈

架构 RocketMQ 故障分析 消息队列

【计算机内功修炼】一:看完这篇还不懂线程与线程池你来打我

码农的荒岛求生

高并发 线程池 进程 高性能 线程’

架構師訓練營 大作業一

ilake

微信气质

池建强

微信

想法

BerryMew

探讨典型互联网系统使用的技术方案

Andy

意想不到,这个神奇的bug让我加班到深夜

码农的荒岛求生

bug修复

「架构师训练营 4 期」 第一周 - 1001

凯迪

数字版权资源价值日益凸显

CECBC

版权保护

第九周 作业1

Mr_No爱学习

架构师训练营—第十三周学习总结

Geek_shu1988

第一周架构方法-练习-食堂就餐卡系统设计

潘涛

架构师训练营 4 期

「架构师训练营 4 期」 第一周 - 001002

凯迪

架构师训练营—第十三周作业

Geek_shu1988

在 Emit 代码中如何await一个异步方法

八苦-瞿昙

LeetCode题解:264. 丑数 II,暴力法,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

监视Ruby程序运行_Ruby_Werner Schuster_InfoQ精选文章