你有个绝佳的商业创意,日复一日地将它完善丰满起来。后来,你雇了一群天赋异禀的开发者、Web 设计师和用户体验专家,他们用一种非常棒的框架——Ruby on Rails 帮你实现长久以来的梦想。
你的网站诞生了!但是,不幸的是,你没有足够的资金用于搭建完善的服务器,你只是将她部署在内存有限的 linux 机器上。一个月的兴奋期之后,你突然意识到,用户的访问量还不足以带来收益。更糟的是,用户流失率高于预期。于是你立即采取措施,寻找网站无法满足用户的具体需求。事实是,用户希望网站响应及时、值得信赖,而这些,你的网站都无法达到。
好吧,在给开发团队分配项目时,你没有考虑到这些。那么,现在该怎么做呢?
「性能提升」出场的时候到了。为了优化系统,你需要收集系统性能数据。对于一个庞杂的程序,人们很难准确预测性能问题的确切位置。而一旦发现性能瓶颈的所在,问题就迎刃而解了。
这里有一些衡量和监控 Ruby on Rails 应用性能的法宝,其中的一些也可应用在其他 Web 应用中。
「不过早优化」和「采用基准测试」是性能优化的基本准则。基准测试是必须的,没有基准测试,优化的效果就无从衡量,所有优化的第一步都应该是基准测试。Rails 从2.2开始内置了 Benchmarker 和 Profiler 工具,通过 Rails 性能测试,能够发现应用资源的存储或速度瓶颈,而 BenchMarker 将有助于了解各项性能测试运行的速度有多快。
有人形容 Benchmarker 和 Profiler 是性能调优的左右手,Profiler 有助于了解性能测试的细节,提供缓慢或内存不足部分的深入图像。每个测试用例在 Profiling 模式下运行一次,内置的 Profiler 实现得很简单,在 ruby2.2 中只有150行代码。
Rails 内建了 Log 功能,或者更准确地说,Rails 暴露了 Logger 对象,该对象可以在所有的 Rails 程序中使用。获取性能信息最简单的方式是分析 Rails Log,它能够提供运行每条请求花费的时间信息,细分花费在渲染和 SQL 中的时间信息。
Rails 分析器包括一系列工具 [生产日志分析器,运行剖析,Rails 分析工具, SQL 依赖记录] 用来捕捉应用中最慢的地方,让错误优化变得更有针对性。
这个工具可以显示应用的 footnotes,以便于调试,除此之外,它还能在编辑器里直接打开文件的链接。
Query Reviewer 实际上是对 mysql 的 explain 命令的封装,是一个方便的用于测试数据库查询效率的插件。它能够生成一个包含所有 SELECT 查询的解释页面,评估一个页面的数据库使用情况,展示交互记录。
Slim Scrooge 是一个优化层,用于确保你的 Rails 应用只在需要的时候才从数据库获取内容,最大限度的降低网络流量,减少 SQL 执行次数以及优化 Ruby 数据类型的转换过程。
OneAPM for Ruby 能够深入到所有 Ruby 应用内部完成应用性能管理和监控,包括代码级别性能问题的可见性、性能瓶颈的快速识别与追溯、真实用户体验监控、服务器监控和端到端的应用性能管理。追溯性能瓶颈至:性能表现差的 SQL 语句、第三方 API、Web Services、Caching Layers、后台任务等。
据说,对于网页开发人员来说,Firebug 是 Firefox 浏览器中最好的插件之一。用户可以利用它除错、编辑、删改任何网站的 CSS、HTML、DOM、与 JavaScript 代码。此外,Firebug也提供扩展的框架,例如 Yahoo! 的网页速度优化建议工具 YSlow、FireCookie、FirePHP 等。除了一些非常优秀的功能,它还可以用于监控网络性能。使用它可以看到每个文件的加载时间,根据类型区分文件,检查 http headers。
随着互联网应用大量涌现,应用性能的重要性也越来越被开发人员所重视。不及时改善性能会使用户的一再流失。以上这些都是检查 Rails 应用性能不错的方法,它们或多或少解决了很多开发者的燃眉之急,如果你还有更好的招数,不妨切磋。
原文链接 http://www.nascenia.com/10-ways-and-tools-to-measure-performance-of-your-rails-application/
本文系OneAPM 工程师翻译。OneAPM 是应用性能管理领域的新兴领军企业,能帮助企业用户和开发者轻松实现:缓慢的程序代码和 SQL 语句的实时抓取。想阅读更多技术文章,请访问 OneAPM官方博客。