2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

监视 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:161289
用户头像

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

关注

评论

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

Design Sprint 教你五天完成产品迭代

Yanel 说敏捷产品

产品 敏捷 设计 产品设计 团队

走进Golang之编译器原理

何磊

编译原理 Go 语言

华为“补洞”:去年重新设计超过6000万行代码

罗燕珊

华为 实体清单

Jenkins权限管理

kcnf

键入网址后,其间发生了什么?

小林coding

TCP 计算机网络 网络协议 IP HTTP

2020第一篇技术博客

java劝退师首席大弟子

生活

JAVA内存模型与线程

颇风

Java 内存模型 JVM

MySQL事务解析

一个有志气的DB

MySQL 事务隔离级别 mysql事务

如何搞定Kafka重复消费?

奈学教育

kafka kafka配置

英语学习中听和说的区别

董一凡

学习

Dart 进阶 | 深入理解 Function & Closure

LitaVadaski

flutter dart

解决 Django 多进程下,logging 记录日志错乱问题

AlwaysBeta

Python django 编程 日志 log

一想到有95%的问题还没解决,我就calm down了

赵新龙

科普 宇宙 后真相时代

《零基础学 Java》 FAQ 之 8-Java方法调用是传值还是传引用

臧萌

Java

如何发布一个npm包-创建,发布,更新,撤销及常见问题解决

Brave

npm

写在开头

宋胖子

用原理认知世界,用情绪驱动行为

史方远

职场 心理 成长

中小企业如何做运维自动化?

外滩运维专家

运维 spug 运维自动化 jenkins ansible

笔记:《如何系统思考》之如何应用系统思考

wiflish

思维方式

识别代码中的坏味道(二)

Page

Java 面向对象 复杂代码优化 重构 CleanCode

新mac笔记本需要做的事情

好好学习

Mac

写作对我的意义

Neco.W

总结 思考 写作 感悟

如何用一套引擎搞定机器学习全流程?

Apache Flink

大数据 flink 流计算 实时计算

Android | Tangram动态页面之路(三)使用

哈利迪

android

回“疫”录(20):世界从来不会欺负听话的人

小天同学

疫情 回忆录 现实纪录 纪实

比AtomicLong更优秀的LongAdder确定不来了解一下吗?

一枝花算不算浪漫

并发编程 jdk源码

PhotoShop切图,一篇文章就够用了

cwang

Web 工具 PhotoShop

CentOS 6 升级 glibc

wong

centos glibc

谈谈控制感(6):虚幻的控制感也好用

史方远

职场 心理 成长

汉字不能编程?别闹了,只是看着有点豪横!容易被开除!

小傅哥

spring 小傅哥 aop 汉字编程

一文带你了解 HTTP 黑科技

苹果看辽宁体育

大前端 HTTP

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