你有个绝佳的商业创意,日复一日地将它完善丰满起来。后来,你雇了一群天赋异禀的开发者、Web 设计师和用户体验专家,他们用一种非常棒的框架——Ruby on Rails 帮你实现长久以来的梦想。

你的网站诞生了!但是,不幸的是,你没有足够的资金用于搭建完善的服务器,你只是将她部署在内存有限的 linux 机器上。一个月的兴奋期之后,你突然意识到,用户的访问量还不足以带来收益。更糟的是,用户流失率高于预期。于是你立即采取措施,寻找网站无法满足用户的具体需求。事实是,用户希望网站响应及时、值得信赖,而这些,你的网站都无法达到。

好吧,在给开发团队分配项目时,你没有考虑到这些。那么,现在该怎么做呢?

「性能提升」出场的时候到了。为了优化系统,你需要收集系统性能数据。对于一个庞杂的程序,人们很难准确预测性能问题的确切位置。而一旦发现性能瓶颈的所在,问题就迎刃而解了。

这里有一些衡量和监控 Ruby on Rails 应用性能的法宝,其中的一些也可应用在其他 Web 应用中。

1. Rails 性能测试 – BenchMarking

「不过早优化」和「采用基准测试」是性能优化的基本准则。基准测试是必须的,没有基准测试,优化的效果就无从衡量,所有优化的第一步都应该是基准测试。Rails 从2.2开始内置了 Benchmarker 和 Profiler 工具,通过 Rails 性能测试,能够发现应用资源的存储或速度瓶颈,而 BenchMarker 将有助于了解各项性能测试运行的速度有多快。

2. Rails 性能测试 – Profiling

有人形容 Benchmarker 和 Profiler 是性能调优的左右手,Profiler 有助于了解性能测试的细节,提供缓慢或内存不足部分的深入图像。每个测试用例在 Profiling 模式下运行一次,内置的 Profiler 实现得很简单,在 ruby2.2 中只有150行代码。

3. Rails Logger

Rails 内建了 Log 功能,或者更准确地说,Rails 暴露了 Logger 对象,该对象可以在所有的 Rails 程序中使用。获取性能信息最简单的方式是分析 Rails Log,它能够提供运行每条请求花费的时间信息,细分花费在渲染和 SQL 中的时间信息。

4. Rails Analyzer

Rails 分析器包括一系列工具 [生产日志分析器,运行剖析,Rails 分析工具, SQL 依赖记录] 用来捕捉应用中最慢的地方,让错误优化变得更有针对性。

5. Rails Footnote

这个工具可以显示应用的 footnotes,以便于调试,除此之外,它还能在编辑器里直接打开文件的链接。

6. Query Reviewer

Query Reviewer 实际上是对 mysql 的 explain 命令的封装,是一个方便的用于测试数据库查询效率的插件。它能够生成一个包含所有 SELECT 查询的解释页面,评估一个页面的数据库使用情况,展示交互记录。

7. Slim Scrooge

Slim Scrooge 是一个优化层,用于确保你的 Rails 应用只在需要的时候才从数据库获取内容,最大限度的降低网络流量,减少 SQL 执行次数以及优化 Ruby 数据类型的转换过程。

8. OneAPM

OneAPM for Ruby 能够深入到所有 Ruby 应用内部完成应用性能管理和监控,包括代码级别性能问题的可见性、性能瓶颈的快速识别与追溯、真实用户体验监控、服务器监控和端到端的应用性能管理。追溯性能瓶颈至:性能表现差的 SQL 语句、第三方 API、Web Services、Caching Layers、后台任务等。

9. Firebug

据说,对于网页开发人员来说,Firebug 是 Firefox 浏览器中最好的插件之一。用户可以利用它除错、编辑、删改任何网站的 CSS、HTML、DOM、与 JavaScript 代码。此外,Firebug也提供扩展的框架,例如 Yahoo! 的网页速度优化建议工具 YSlow、FireCookie、FirePHP 等。除了一些非常优秀的功能,它还可以用于监控网络性能。使用它可以看到每个文件的加载时间,根据类型区分文件,检查 http headers。

随着互联网应用大量涌现,应用性能的重要性也越来越被开发人员所重视。不及时改善性能会使用户的一再流失。以上这些都是检查 Rails 应用性能不错的方法,它们或多或少解决了很多开发者的燃眉之急,如果你还有更好的招数,不妨切磋。

翻译改编自原作者:Fuad Bin Omar, COO, Nascenia

原文链接 http://www.nascenia.com/10-ways-and-tools-to-measure-performance-of-your-rails-application/

本文系 OneAPM 工程师翻译。OneAPM 是应用性能管理领域的新兴领军企业,能帮助企业用户和开发者轻松实现:缓慢的程序代码和 SQL 语句的实时抓取。想阅读更多技术文章,请访问 OneAPM 官方博客

九个衡量 Rails 应用性能的小方法的更多相关文章

  1. .NET性能优化小技巧

    .NET 性能优化小技巧 Intro 之前做了短信发送速度的提升,在大师的指导下,发送短信的速度有了极大的提升,学到了一些提升 .NET 性能的一些小技巧 HttpClient 优化 关于使用 Htt ...

  2. 10个提升MySQL性能的小技巧

    从工作量分析到索引的三条规则,这些专家见解肯定会让您的MySQL服务器尖叫. 在所有的关系数据库中,MySQL已经被证明了完全是一头野兽,只要通知停止运行就绝对不会让你多等一秒钟,使你的应用置于困境之 ...

  3. 提高ASP.net性能的十种方法

    提高ASP.net性能的十种方法 2014-10-24  空城66  摘自 博客园  阅 67  转 1 转藏到我的图书馆   微信分享:   今天无意中看了一篇关于提高ASP.NET性能的文章,个人 ...

  4. 不修改代码就能优化ASP.NET网站性能的一些方法

    阅读目录 开始 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一些方法用于优化ASP.NET网站性能,这些方法都是不 ...

  5. android 小方法

    小方法 1.获取屏幕分辨率: public class BaseTools { public static int getWindowWidth(Context context) { // 获取屏幕分 ...

  6. 如果是除去末尾特定字符或字符串:TrimEnd方法性能优于Remove方法

    测试用例--除去末尾特定字符或字符串,Remove方法和TrimEnd方法的比较 结论: 如果是除去末尾特定字符或字符串:TrimEnd方法性能优于Remove方法 具体测试用例如下: Stopwat ...

  7. jQuery提供的小方法

    jQuery提供的小方法: 1.选择器 + 事件 + 函数 = 复杂的交互 2.循环处理与选择器匹配的各个元素:each() $("#").each(function(){     ...

  8. WinForms C#:html编辑器工程源码,含直接写WebBrowser的文件流、IPersistStreamInit接口的声明和一些相关的小方法

    原文:WinForms C#:html编辑器工程源码,含直接写WebBrowser的文件流.IPersistStreamInit接口的声明和一些相关的小方法 首先多谢朋友们的捧场: 今天给大家带来一个 ...

  9. 性能测试培训:tomcat性能调优方法

    性能测试培训:tomcat性能调优方法   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的loadrunner ...

随机推荐

  1. 第一个MySQL 存储过程

    昨天写了人生第一个mysql存储过程:遗憾的是,这个存储过程最后还是没用上,用php代码替代 话说mysql的存储过程真是反人类,不查reference,基本不能看懂那些语句:语言中能和它相比的,只有 ...

  2. Web Design:欧美人形剪影的404界面

    项目需求,必须得写个404界面,比较愁,因为网站属于那种电商+艺术品拍卖的网站,404界面不太好设计 很多时候网站直接代码报错输出404,不过设计过的404也有好处,比如改进用户体验.增强互动性之类的 ...

  3. LaTeX插入jpg图片: 使用graphicx

    首先要包含宏包 \usepackage{graphicx} \begin{figure}[ht!] \centering \includegraphics[width=90mm]{fixed_dome ...

  4. eclipse代码编辑快捷键

    代码提示(代码助手):alt + / 如输入e后按alt+/,则会出现以e开头的相关方法,写代码时经常按按 删除一行代码: 光标移动到该行任意位置,按ctrl+d 剪切:ctrl+x 复制:ctrl ...

  5. 海蜘蛛ISPV6.1.5,目前破解版本中最稳定的!

    海蜘蛛ISPV6.1.5,目前破解版本中最稳定的! 破解步骤如下: 一.安装完毕进控制台 二.使用muddyboot登陆 密码(123456) 三.输入root回车 四.输入regtools回车 五. ...

  6. UIBezierPath 的使用介绍

         使用UIBezierPath类可以创建基于矢量的路径.此类是Core Graphics框架关于path的一个封装.使用此类可以定义简单的形状,如椭圆或者矩形,或者有多个直线和曲线段组成的形状 ...

  7. Swift Tips - 当 Swift 遇上 CocoaPods

    CocoaPods 作为 iOS 开发的包管理工具,几乎成为了 Objective-C 的行业标准.它为我们提供了非常方便的包管理功能.而苹果正式发布 Swift 语言也已经有半年多时间了,Swift ...

  8. R统计图

    主题:R统计图 作者:luomg 关键字:统计,R,ggplot2 1.什么是统计图? 统计图:统计图是从数据到几何对象的图形属性的一个映射 砖石重量对价格的散点图 qplot(carat,price ...

  9. PB串口编程资料(转)

    ----MSCOMM32参数基本介绍2008年03月29日 星期六 上午 11:37MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能.MSComm控件在串口编程时非常方便,程序 ...

  10. typings的理解

    简介一些js库扩展了JavaScript的特性和语法,但是TypeScript编译器并不识别,通过typings.json配置可以辅助IDE,给出有智能的提示信息,以及重构的依据.因此需要在typin ...