九个衡量 Rails 应用性能的小方法

你有个绝佳的商业创意,日复一日地将它完善丰满起来。后来,你雇了一群天赋异禀的开发者、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 应用性能的小方法的更多相关文章
- .NET性能优化小技巧
.NET 性能优化小技巧 Intro 之前做了短信发送速度的提升,在大师的指导下,发送短信的速度有了极大的提升,学到了一些提升 .NET 性能的一些小技巧 HttpClient 优化 关于使用 Htt ...
- 10个提升MySQL性能的小技巧
从工作量分析到索引的三条规则,这些专家见解肯定会让您的MySQL服务器尖叫. 在所有的关系数据库中,MySQL已经被证明了完全是一头野兽,只要通知停止运行就绝对不会让你多等一秒钟,使你的应用置于困境之 ...
- 提高ASP.net性能的十种方法
提高ASP.net性能的十种方法 2014-10-24 空城66 摘自 博客园 阅 67 转 1 转藏到我的图书馆 微信分享: 今天无意中看了一篇关于提高ASP.NET性能的文章,个人 ...
- 不修改代码就能优化ASP.NET网站性能的一些方法
阅读目录 开始 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一些方法用于优化ASP.NET网站性能,这些方法都是不 ...
- android 小方法
小方法 1.获取屏幕分辨率: public class BaseTools { public static int getWindowWidth(Context context) { // 获取屏幕分 ...
- 如果是除去末尾特定字符或字符串:TrimEnd方法性能优于Remove方法
测试用例--除去末尾特定字符或字符串,Remove方法和TrimEnd方法的比较 结论: 如果是除去末尾特定字符或字符串:TrimEnd方法性能优于Remove方法 具体测试用例如下: Stopwat ...
- jQuery提供的小方法
jQuery提供的小方法: 1.选择器 + 事件 + 函数 = 复杂的交互 2.循环处理与选择器匹配的各个元素:each() $("#").each(function(){ ...
- WinForms C#:html编辑器工程源码,含直接写WebBrowser的文件流、IPersistStreamInit接口的声明和一些相关的小方法
原文:WinForms C#:html编辑器工程源码,含直接写WebBrowser的文件流.IPersistStreamInit接口的声明和一些相关的小方法 首先多谢朋友们的捧场: 今天给大家带来一个 ...
- 性能测试培训:tomcat性能调优方法
性能测试培训:tomcat性能调优方法 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的loadrunner ...
随机推荐
- 关于EasyUI与富文本编辑器结合使用的问题(kindueditor与uueditor)
最近使用easyui玩玩项目,在结合富文本编辑器时遇到了一些问题,很多人(在网上看到)集成富文本编辑器时常常不能显示, 第一次打开编辑的时候没有问题,但是第二次打开就出错了.为此我进行了一些调试研究. ...
- Python学习教程(learning Python)--2.3 Python自定义函数传参函数设计
Python里自定义子函数时,可以在调用时携带一些参数到子函数里去处理.具体用法结构如下: def func(arguments): statement statement etc. 定义子函数一定要 ...
- Github上LeakCanary编译报错CreateProcess error=2的解决方法
现象说明: 从github上拉下LeakCanary编译时报错 CreateProcess error=2, ϵͳÕҲ»µ½ָ¶ 原因分析: 该现象是由于Windows中Gradle调用命令未加cmd ...
- Secondary IP Addressing
Secondary IP Addressing secondary IP addressing. Secondary addressing uses multiple networks or subn ...
- poj 2377 Bad Cowtractors
题目连接 http://poj.org/problem?id=2377 Bad Cowtractors Description Bessie has been hired to build a che ...
- Windows Phone中Wallet钱包的使用
前言 Windows Phone 8中加入了钱包Wallet这个功能,这个功能非常的有意思,开发者可以通过Wallet提供的API创建获取Wallet中的商品.统一管理用户的收集优惠券.信用卡.成员资 ...
- xcode 产生指定颜色的图片imageWithColor
是在万能的stackOverflow上找到的答案,留下了, 原地址:http://stackoverflow.com/questions/6496441/creating-a-uiimage-from ...
- [转]network-manager与interfaces冲突
[转]network-manager与interfaces冲突 http://blog.sina.com.cn/s/blog_48a45b9501010681.html 网络配置的两种方式 ...
- [笔记]一个测试浏览器对html5支持的网站
用需要测试的浏览器打开这个地址:http://html5test.com/
- Python实现LR(逻辑回归)
Python实现LR(逻辑回归) 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=>end o ...