加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – On New Relic对于Heroku Rails应用程序有什么

发布时间:2020-12-17 03:31:42 所属栏目:百科 来源:网络整理
导读:我正在努力提高我在Heroku上托管的pre-beta Rails 3.2应用程序的性能. 积极的缓存已经大大改善了一些东西,但是当我在New Relic上查看我的应用服务器响应时间时,我仍然注意到“在Ruby中花费的时间”的大量贡献(图中的浅蓝色). Rails应用程序的哪些部分通常会
我正在努力提高我在Heroku上托管的pre-beta Rails 3.2应用程序的性能.

积极的缓存已经大大改善了一些东西,但是当我在New Relic上查看我的应用服务器响应时间时,我仍然注意到“在Ruby中花费的时间”的大量贡献(图中的浅蓝色).

Rails应用程序的哪些部分通常会导致这个“Ruby时间”?

我最初认为这是由于我的一个主控制器中的复杂条件,但已经简化了这一点.我现在使用俄罗斯玩偶片段缓存和内存缓存(哇!)非常积极地缓存我的观点.

服务静态资产是一个原因吗? (转移到S3 / CloudFont是在待办事项列表…)

谢谢!

(我已经设置了delayed_job并将所有可能的内容移到后台.我也使用Unicorn作为我的Web服务器.)

更新的性能调整

积极缓存后,我开始寻找其他方法来提高应用程序性能.

首先,我添加了垃圾收集监控作为建议,发现GC对Ruby时间没有显着贡献.

接下来,我决定通过添加CDN(通过CDNsumo附加组件的Cloudfront)来获得我的资产服务.实际上,这实际上减少了我在NR监控上的Ruby时间. (CDN已经提供,然后通过下图最右边的最后一次请求测试加热.)我的大多数页面都有几百kb的css& javascript – 所以不小但不大.

最后,我从’基本’入门数据库升级到最小??的生产数据库’Crane’.这对性能产生了巨大影响.经过PG的一点缓存,应用程序飞了. (下图中最后3个请求峰值).

为其他人尝试调整他们的Heroku应用程序带回家消息:

>在多个领域进行简单的性能调优(即缓存,CDN,数据库,Ruby代码)在整个堆栈中具有协同效应.
>相反,即使您调整其他区域(即Heroku上的慢启动Basic或Dev数据库与’昂贵的’生产数据库 – 慢速基本数据库正在杀死我的应用程序),任何单个性能消耗都将是您无法克服的瓶颈性能).
> NewRelic对于找出可以获得最大收益的地方至关重要.

解决方法

“Ruby”时间实际上是NewRelic追踪的“其他”桶.其他类别是显式度量(即:调用memcached花费了多少时间). Ruby时间总是花在其中一个桶上.

那么“Ruby”时代还会发生什么呢?排名第一的候选者是垃圾收集(GC).如果您正在运行Ruby 1.9,则可以通过使用以下命令创建初始化程序(如config / initializers / newrelic.rb)来启用GC的NewRelic分析:

GC::Profiler.enable

这将跟踪GC时间作为单独的NewRelic类别.

如果您在GC上处于良好状态,则下一步是使用Web Transactions视图查看这些平均时间的分布情况.也许你的应用程序中的一两个动作是可怕的表演者并且对这些平均值负责.

祝你好运,如果你还有麻烦,可以直接联系.性能调整是一种黑色艺术.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读