你有个绝佳的商业创意,日复一日地将它完善丰满起来。后来,你雇了一群天赋异禀的开发者、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. python实现 _ 图书馆书籍到期之前_自动邮件提醒

    一共两个脚本: 第一个是[借书完毕以及借书信息有变更(续借等)]的时候需要执行的脚本:实现模拟登陆,同时最新的借书信息的下载到本地文本:之所以没有这样做,是因为如果每次爬取一遍的话,需要每次输入一遍验 ...

  2. Linux 两个目录浅对比拷贝

    对比两个目录内容,然后拷贝! #!/usr/bin/python# -*-coding:utf-8 -*-import osimport sysimport shutildef get_dir_con ...

  3. 浅析python的string.Template

    摘自:python参考手册. string模块定义了一种新字符串类型Template,简化了特定的字符串置换操作, Template定义一个类 1.template(s),  #s是字符串 s='he ...

  4. DB2中ixf文件的导入导出

    1. 导出数据 语法:EXPORT TO <文件路径>/文件名.IXF OF IXF SELECT * FROM 表名   2. 导入数据 语法:db2 IMPORT FROM <路 ...

  5. SQL 跟踪方法相关介绍

    oracle sql跟踪方法:1.sql_trace打开跟踪:alter session set sql_trace=true;为跟踪文件做标记:alter session set tracefile ...

  6. AppCan应用开发之插件实践篇-支付插件

    电商O2O无疑是目前最受用户欢迎的APP类型,而在这类APP中必不可少的就是在线支付功能了.在AppCan平台开发这类应用时,官方封装了微信支付.支付宝.银联等多种支付SDK,更接入了多家聚合支付平台 ...

  7. (转)Docker常用命令

    1. 查看docker信息(version.info) # 查看docker版本 $docker version # 显示docker系统的信息 $docker info 2. 对image的操作(s ...

  8. C++设计模式——享元模式

    本文版权归果冻说所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.如果这篇文章对你有帮助,你可以请我喝杯咖啡. » 本文链接:http:// ...

  9. iOS 自定义导航栏 和状态栏

    一.更改状态栏颜色 (StatusBar) 就是比如导航栏是红色的状态栏是绿色的. 要实现这样的效果其实很简单,就是添加一个背景view. 简单的实现过程如下: 1 // 设置导航颜色 可用 2 [s ...

  10. elasticsearch-查询的基本语法

    elasticsearch的查询有两部分组成:query and filter. 两者的主要区别在于:filter是不计算相关性的,同时可以cache.因此,filter速度要快于query. 先记录 ...