New Relic 升级 RPM,改善了协作和集成性能

  • Robert Bazinet
  • 杨晨

2009 年 3 月 29 日

话题:RubyRuby on Rails语言 & 开发架构

在对开发者的协作化和集成化工作进行了漫长的改进之后,New Relic 终于发布了RPM 1.2

RPM 1.2 引入了一些新特性,能够很好地处理当前让 Ruby on Rails 开发者比较头痛的地方。InfoQ 在最近的一个会议上遇见了 New Relic 的 CEO Lewis Cirne,借此机会,我们能够得到第一手的关于这些特性的信息。Lewis 和我们一起讨论了这些特性,并且解释了这些特性将会如何在开发团队中使用。

当被问到名为“部署分析和追踪”的新特性是什么,以及为什么它对开发者来说是一个重要更新时,Lewis 说道:

当开发者在应用程序中加入新的代码的时候,他们会在一个临时的环境中测试,然后当代码合格可以发布的时候,再使用例如 Capistrano 这样的部署工 具,将代码部署到产品中。部署是应用程序的生命周期中关系到性能和稳定性最重要的时间段之一。新的特性或者改变可能会引入未预见的性能问题。RPM 现在以 如下方式支持这种关键的部署过程:首先,我们标记出每个部署的时间,在适当的时候提醒开发者应该在这个时间发布一个应用程序的最新版本,他们能够在每个图 中直观地看到版本部署前后性能的对比。其次,我们在一个存档文件中保存每个应用程序的所有关键的性能指示器,团队能够从中看到在版本的升级过程中性能的改 进情况。

开发者能够从这类工具中获取的信息显然是非常重要的,其详细程度决定了这个工具是否有用,Lewis 告诉我们哪些我们可以期待:

对于应用程序每个部署的新版本,自从部署之时,RPM 就保存了部署的名称、时间、负责人以及 CPU 平均占用情况、内存使用情况、应用程序反应时间、吞吐 量、数据库更新回应以及每分钟错误数。这个特性使得团队能够追踪器进程。同样能够帮助团队快速认识到他们发布的版本是否存在重大问题。使用 RPM 的深究功 能,用户可以在一个非常细的粒度上追踪问题──特定的 SQL 查询,特定的控制器行为等。

Lewis 同样也告诉我们 RPM 集成了其他的开发交流工具的特性,包括那些我们经常使用的交流工具:

一个开发者团队会在工作中使用大量的工具来编码、测试、部署、设定工作优先级和交流。但是当团队快速开发以及面临截止日期的压力的时候,在不同的工具之间 转换是一件非常让人不爽的事情。这种情况经常需要在工具之间进行大量的剪切和粘贴。用户在使用 RPM 集成这些常用工具的时候,将不会面临这样的问题。 Twitter 经常被团队用来进行交流,新的 RPM 支持当检测到应用程序中出现问题或者新的部署已经完成的时候,发送信息(tweet)到团队的账户。 Tweet 包括 RPM 中的相关页面链接。Campfire 是另外一个设计用来快速发布消息的工具。RPM 同样能够发送事故警告以及部署通知到 Campfire 帐户。Lighthouse 是一个错误标签系统。在 RPM 的错误页面中,我们已经创建了一个链接,叫做“在 Lighthouse 上创建一 个标签”。点击这个链接,所有的错误数据都会发送到 Lighthouse,并且一个问题标签会被自动创建。Capistrano 是一个在 Ruby on Rails 社区非常流行的部署工具。RPM 能够自动检测到应用程序的新部署,并且从 Capistrano 获取关于这次部署的信息,例如本次部署的负责人, 更新信息以及其他在出错时的有用数据。

Lewis 继续谈论了新的性能数据 API 的前景以及第三方开放人员的机会:

事实上我们已经看到了一些关于此 API 的有趣的应用。这个 API 主要功能为如下两点──它自动从另外一个应用程序中创建一个 New Relic RPM 帐号,并且允许最高等级的性能数据转入其他的程序或者环境中。我们这个 API 的第一个大规模应用是 RightScale,云管理工具的领导厂商。他 们将 API 函数和他们的云管理控制台集成在一起。所以现在可以通过云管理解决方案来监控部署在类似于 Amazon EC2 的云上的 Rails 应用程序。我们有一些其他的顾客和合作伙伴也在努力集成我们的 API。有一个集成程序是将应用程序的数据在浏览器的状态栏上显 示。现在也有两个另外的云样例。我们现在举办了一个 API 的应用竞赛,鼓励我们的顾客更加创新地将我们的 API 集成进去。

RPM1.2 的一个新特性是笔记的思想,使得团队成员能够更加方便快捷地交流。它是这样一种功能:

笔记是一个非常激动人心的特性,它被设计用来更好更丰富地在团队内部进行交流。任何拥有 RPM 帐户的人都能够看到这个应用程序的一些笔记。使用笔记功能, 任何 RPM 用户都能够截取一张性能图表,对其进行分析观察之后,发送他的笔记和这张图表到一个共享的协作空间中。然后,他可以截取另外一张图,进行分析研 究之后,附加在之前的笔记之后,然后继续进行分析。他可以允许他的团队成员检查他观察的内容并且从自身的角度来进行分析。图表、数据以及观察结果都会被存 储下来以供后续使用。这是一个非常优秀的教学工具。他们也使得团队可以在时间允许的情况下审视记录的数据,从而更好地理解应用程序的行为。

Rub on Rails 开发者明白有一个高效的控制器和数据库存取是多么的重要。一个名为“控制器和数据库概要”的最新特性能够帮助开发者使用一些插件。这个特性描述如下:

这个特性提供的报告虽然相似,但是对于团队寻找持续改善性能的方法是非常有用的。开发者经常扪心自问的一个问题是“我下一步怎么做才能更好地改善性能 呢?”这些报告帮助他们找到了答案。控制器概要提供了一份报告,列出了应用程序中所有的控制器行为。RPM 用户可以选择一个时间窗口,例如最近 24 小时。 RPM 将每个控制器行为在当前时间窗口内的如下数据整合起来 --- 控制器调用的时间,平均响应时间,平均时间的标准方差(有时候平均时间没有包括偶尔产生 的非常坏的响应时间──为什么?),最大最小响应时间(给出概要),时间窗口中控制器行为的总消耗时间以及每个控制器行为消耗时间的百分比。从这个报告 中,一个开发者可以看到哪个控制器调用最为频繁,其性能如何。数据库报告也和控制器报告类似,但是关注于分析 ActiveRecord 模型操作(数据库调 用)的性能。它给出了在一个时间窗口内所有的 ActiveRecord 操作,并且允许你使用一些标准对这些操作进行排序,例如总消耗时间、平均时间和吞吐 时间等等。你可以和昨天或者一周前的同一时间窗口内的操作进行对比,从中可以观察到应用程序的改进过程。

当问到哪一个特性对于开发者来说是最重要的,Lewis 说:

虽然我不想像个经济学家,但是事实上我必须得像一个经济学家那样来说。我想部署特性将会被那些频繁更新程序的团队广泛接受。我们有一些顾客需要每天部署, 所以你可以想象这个特性的受欢迎程度。对于那些队员分散在世界各地的团队来说,我们的多样化集成和协作工具将会非常有用。最后如果你有一个程序需要大量的 数据库操作,并且依赖于优秀的

更多关于新 RPM 版本的信息请参见New Relic 官方网站。可用的免费版本叫做 RPM Lite,但是用户需要访问可用版本列表来决定哪个版本是最适合的。只需要大约两分钟来做这个决定。

查看英文原文:New Relic updates RPM to Improve Collaboration and Integration

RubyRuby on Rails语言 & 开发架构