M. *_*her 9 ruby-on-rails ruby-on-rails-3
我一直在Ruby on Rails 3中构建一个应用程序,我开始担心性能优化.现在我希望我的问题对于这个网站来说不是太主观,但我对事实感兴趣,而不是讨论,所以这里是:
虽然我试图让我的观点更快地渲染,但有一件事我根本不知道:我应该瞄准什么?鉴于页面相当复杂,加载时间是否切合实际?我根本没有任何参考.
我通常看到的应用程序是这样的:
在397ms完成200 OK(浏览次数:341.1ms | ActiveRecord:17.7ms)
这是在我的生产服务器上,运行Apache/Passenger.
我是唯一一个(!)在该服务器上发出请求,它是一个根服务器(非虚拟),运行Ubuntu,AMD Athlon 64 X2 5600 +,4 GB RAM
也就是说,对于我的大多数更复杂的动作(不是非常复杂,只是假设它是20个对象的分页列表,每个或每个具有5个计算属性),ActiveRecord时间几乎总是很好(<20-30ms),但是"视图" "数字通常> 200毫秒.
现在,我的问题:当我开始使用RoR时,我的期望(可能是不切实际的)是大多数面向消费者的应用程序具有平均复杂性(让我们说像Facebook,Twitter等等,没有数百万用户)我会得到<20 ms加载时间,只要我是唯一一个发出请求的人,并且如果有很多人同时发出请求,单个服务器加载时间只会接近100毫秒或更长.
我的期望也是数据库请求将是主要的瓶颈,因为所有其余的只是相对简单的计算而没有任何真正的复杂性.我认为从数据库获取所有对象可能需要10ms,然后可能需要另外5ms来运行控制器代码,构建视图等.
由于我从未负责任何制作应用,我不知道这种期望是否真实.所以我希望有经验的人向我指出我的现实期望应该是什么.
同样,我希望这不是太主观,但我对RoR是否快速的意见并不感兴趣,我希望从具有更多经验的人那里得到事实,这些数字是平均值并且可以从生产RoR应用程序中获得预期.否则,我根本不知道我应该停止优化,只是接受我永远不会得到10毫秒的加载时间.
小智 6
天哪,我不确定我是那个回答这个问题的人,但是因为我已经在这些水域度过了足够的时间,所以我可能对这些事情的看法不完整.
首先,响应时间非常主观.意思是,如果它对你来说足够好就足够了.根据我的经验,类似于您的描述的页面似乎花费的时间与您描述的一样多.所以,你在任何一个方向都没有数量级.
如果您想使用当前架构优化视图渲染,我认为您的下一步就在这里.格雷格波拉克在为你打破这些东西方面表现出色,并确保你走上正轨.您将确保缓存您的资产并对您的堆栈进行微调.那将是你最实用的一般建议.
如果你愿意看看你的部署架构,Ilya Grigorik在本文中提出了一些很好的问题,然后用Goliath回答它们.如果您的瓶颈加速了服务器 - 客户端往返,那可能就是这样做的方法.
我试着关注Aaron Patterson关于表现的所有内容,就像在这次演讲中一样.他将教授一般优化思路,其中大部分都是针对服务器端代码的.您可能会发现一些与您当前问题相关的事情.
今年我被MWRC的一名前同事拉到了一边,并告诉我如果我这些天不用JRuby建造我就绝对疯了.这是一个承诺,我一直拒绝做出类似的重大改变,直到我有真正痛苦的响应时间,我不这样做,而且听起来不像你也有.但是,JRuby现在是一个非常主流的事情,你和我可能会在未来某个时候接受这个项目.
所以,最重要的是,我认为你正处于一个spry app的领域.我想我会按照我提出的顺序来处理这些资源.
我在 20 美元/月的 linode 服务器上的查看时间 < 20 毫秒。这是针对中等复杂度的请求、在 JRuby 上运行的经过良好优化的代码。无论如何,您都没有达到 Rails 的性能限制。是时候使用分析器看看是什么花了这么长时间。
| 归档时间: |
|
| 查看次数: |
1593 次 |
| 最近记录: |