BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

监视Ruby程序运行

| 作者 Werner Schuster 关注 9 他的粉丝 ,译者 曹云飞 关注 0 他的粉丝 发布于 2007年12月19日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。
在最近一次对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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT