QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

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

关注

评论

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

SOFABoot 4.0 正式发布,多项新特性等你来体验!

SOFAStack

springboot Java 分布式 jdk17 #开源

go-zero 是如何实现计数器限流的?

AlwaysBeta

Go 微服务 限流算法 go-zero 限流器

在2023年及以后可以改善企业业务的五种软件

高端章鱼哥

项目管理 软件开发 业务管理

山东布谷科技直播软件源码探索高效、稳定直播传输的技术介绍:流媒体传输技术

山东布谷科技

软件开发 直播 源码搭建 直播软件源码 流媒体技术

AI技术赋能,引领行业变革 | 百度营销创新打造“信息流AI投放”

科技热闻

veridex执行错误分析与方案

XCG00

Android;

贡献超 10 万代码的新晋 committer,持续参与 Apache IoTDB 社区的“秘籍”是?

Apache IoTDB

Vulkan-性能及精细化

江湖修行

android OpenGL ES opengl 渲染 vulkan

“铁头乔”出品!CommunityOverCode Asia 专题介绍之物联网(IoT)/工业物联网(IIOT)

Apache IoTDB

网络虚拟世界不是法外之地,必须严打网络暴力

石头IT视角

条条大路通罗马系列—— 使用 Hiredis-cluster 连接 Amazon ElastiCache for Redis 集群

亚马逊云科技 (Amazon Web Services)

Amazon

MySQL教学,是不是干货你说的算

java易二三

MySQL 数据库 程序员 计算机 电脑

springboot+activiti+vue+mysql轻松搞定审批!(源码)

金陵老街

一键登录和短信验证登录,到底有什么区别?

MobTech袤博科技

前端 App 前端开发 APP开发

基于 KubeSphere 快速部署 ByConity

朱亚光

云原生 数据舱

万物皆可销售:数字世界中的商业文明之光

B Impact

大咖云集︱2023第二届中国PMO&PM大会倒计时15天!

新消费日报

Programming abstractions in C阅读笔记:p88-p90

codists

直播预告 | 博睿学院:浅析windows Hook原理和机制

博睿数据

可观测性 智能运维 博睿数据 直播预告 博睿学院

微软为AI投了多少钱?以及是否要担心这笔疯狂的资本支出

B Impact

go-zero 是如何做路由管理的?

AlwaysBeta

Go 源码 微服务 go-zero 路由

IOS上架流程

加速解锁科学智能前沿,昇思MindSpore铸就了一把“全能”钥匙

脑极体

AI

Spring 简介

小万哥

Java spring 后端 spring-cloud spring-boot

C语言驱动开发之内核解锁与强删文件

芯动大师

何时使用MongoDB而不是MySql

越长大越悲伤

MySQL 数据库 mongodb

倒计时 1 天!1000+ 技术先锋,龙蜥社区受邀参加 OCP China Day 2023

OpenAnolis小助手

龙蜥活动 OCP China Day 2023

现代数据分析的革命,ABI报表工具引领企业进入数据驱动时代

流量猫猫头

深化产教融合,华为与高校共建鸿蒙人才培养

Geek_2d6073

SpringBoot3文件管理

Java 架构 springboot SpringBoot3

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