Ruby on Rails:我的实际目标是什么?

2024-03-24

我一直在 Ruby on Rails 3 中构建应用程序,并且开始担心性能优化。现在我希望我的问题对于这个网站来说不太主观,但我对事实感兴趣,而不是讨论,所以这里是:

虽然我试图让视图渲染得更快,但有一件事我根本不知道:我的目标是什么?给定一个相当复杂的页面,实际的加载时间是多少?我根本没有任何参考。

我通常在我的应用程序中看到的是这样的:

在 397 毫秒内完成 200 OK(查看次数:341.1 毫秒 | ActiveRecord:17.7 毫秒)

  • 这是在我的生产服务器上,运行 Apache/Passenger。

  • 我是唯一一个(!)在该服务器上发出请求的人,它是根服务器(不是虚拟的),运行 Ubuntu,AMD Athlon 64 X2 5600+,4 GB RAM

  • 也就是说,对于我的大多数更复杂的操作(不是异常复杂,只是假设它是 20 个对象的分页列表,每个对象有 5 个计算属性或其他东西),ActiveRecord 时间几乎总是很好(200 毫秒。

  • 现在,回答我的问题:当我开始使用 RoR 时,我的期望(也许不切实际)是,对于大多数具有平均复杂度的面向消费者的应用程序(比如 Facebook、Twitter 等,没有数百万用户),我会得到

  • 我还期望数据库请求将成为主要瓶颈,因为其余的只是相对简单的计算,没有任何真正的复杂性。我认为可能需要 10 毫秒才能从数据库获取所有对象,然后可能还需要 5 毫秒来运行控制器代码、构建视图等。

由于我从未负责过任何生产应用程序,因此我不知道这种期望是否现实。所以我希望有经验的人向我指出我的现实期望应该是什么。

  • (例如,“只要您是唯一提出请求的人,几乎所有内容(除了真正令人讨厌的内容)都应该在 50 毫秒内呈现”)
  • 或(“实际上 300 毫秒对于 RoR 应用程序来说并不罕见,即使您是唯一的用户”)
  • 或者(“你在开玩笑吗?在比你的服务器更小的服务器上,我收到 150 个并发请求的时间

再次强调,我希望这不是太主观,但我对 RoR 是否快的观点并不真正感兴趣,我希望从具有更多经验的人那里了解平均数字以及生产 RoR 应用程序的预期数据。否则我根本不知道在什么时候应该停止优化并接受我永远不会获得 10 毫秒的加载时间。


天哪,我不确定我是不是回答这个问题的人,但由于我已经在这些水域周围呆了足够多次,我可能对要看的东西有一个不完整的想法。

首先,响应时间是相当主观的。意思是,如果它对你来说足够好,那就足够了。根据我的经验,与您的描述类似的页面似乎花费与您所描述的内容一样多的时间。所以,你在两个方向上都没有相差几个数量级。

如果您想使用当前架构优化视图渲染,下一步是here http://railslab.newrelic.com/scaling-rails, 我认为。 Greg Pollack 出色地为您分解了这些内容,并确保您走上正轨。您一定会缓存您的资源并微调您的堆栈。这将是您最实用的一般建议。

如果您愿意查看您的部署架构,Ilya Grigorik 提出了一些很好的问题本文 http://www.igvita.com/2010/06/07/rails-performance-needs-an-overhaul/然后回答他们Goliath http://www.igvita.com/2011/03/08/goliath-non-blocking-ruby-19-web-server/。如果您的瓶颈正在加速服务器到客户端的往返速度,那么这可能就是可以采取的方法。

我尝试关注 Aaron Patterson 所说的有关表演的任何内容,例如这次演讲 http://confreaks.net/videos/427-rubyconf2010-zomg-why-is-this-code-so-slow。他将教授一般优化思想,其中大部分是针对服务器端代码的。您可能会发现一些与您当前问题相关的事情。

我被一位前同事拉到一边MWRC http://mtnwestrubyconf.org/今年,他告诉我,如果我现在不使用 JRuby 进行构建,我绝对是疯了。这是一种承诺,我一直拒绝做出这样的重大改变,直到我有真正痛苦的反应时间,我没有,而且听起来你也没有经历过。然而,JRuby 现在是一种非常主流的做法,您和我可能会在未来的某个时候在某些项目中接受它。

所以,最重要的是,我认为你已经进入了一个敏捷应用程序的领域。我想我会按照我提供的顺序来处理这些资源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby on Rails:我的实际目标是什么? 的相关文章

  • 使用 RSpec 请求规范授权请求时,access_token 无效

    我正在尝试测试CredentialsController 使用 RSpec 请求规范在生产中运行良好 Code 控制器 class CredentialsController lt ApplicationController before
  • 使用 prawnto_2 gem 加载图像时,RAILS_ROOT 不再有效

    我正在将我的应用程序从 Rails 3 0 升级到 Rails 3 1 我已经尽可能地将旧插件转为 gems 其中包括用这个漂亮闪亮的新插件替换旧的 prawnto 插件对虾 2 https github com forrest prawn
  • 如何使用回形针对多页 pdf 进行缩略图

    我想让 Paperclip 为上传的多页 PDF 文件的每一页创建 2 个缩略图 我正在运行 Paperclip 2 3 1 1 并在我的资产模型中使用它 has attached file asset styles gt medium g
  • Watir 脚本偶尔返回 Net::ReadTimeout 错误

    我有一个 Watir 脚本 偶尔会意外地返回此错误 Net ReadTimeout 我搜索了这个错误并发现这个问题 https stackoverflow com questions 47452276 watir get sometimes
  • 如何在 Rails 2.3.5 中从模型渲染部分

    我有一个 Rails 2 3 5 应用程序 我试图从模型中渲染几个部分 我知道 我知道 我不应该这样做 我这样做的原因是我将 Comet 服务器 APE 集成到我的 Rails 应用程序中 并且需要根据模型的事件 例如 after crea
  • 红宝石和纱线

    I have an error with my RoR project when I try to start it using Run shift f10 但是当我使用启动服务器时rails s在控制台中 它有效 Your Yarn pa
  • 如何编写运行 Rails db:migrate 任务的 rake 任务?

    我想运行 db migrate VERSION 0 然后在我自己的 rake 任务中运行 db migrate 我对如何做到这一点感到困惑 我需要特殊的要求声明吗 我的 rake 任务将驻留在 Rails 应用程序的 lib tasks 目
  • Rails 3.2 开发模式不显示带有回溯等的完整错误页面

    我刚刚升级到 Rails 3 2 一切正常 除了错误页面不再显示正常的开发调试信息 相反 它显示标准生产错误页面 白色背景 中间有红色文本 很抱歉 出了点问题 我们已收到有关此问题的通知 我们会尽快查看 Rails 3 2 是否有新的设置或
  • Elastic Beanstalk、Bundler 找不到 gem“bundler”的兼容版本

    我已经尝试过将 Elastic Beanstalk 用于 Rails 当我运行 eb deploy 时出现此错误 我需要至少安装bundler 1 8 4 知道如何解决这个问题吗 Bundler could not find compati
  • Guard 不会加载 WDM

    我正在学习 Michael Hartl 的 Rails 教程 到目前为止该教程非常出色 我在高级设置一章中 他以有利于 TDD 的方式配置 Rails 环境 我安装了 Guard 并且通过运行我在 spec 文件夹中的测试 它一直正常运行
  • Rails:测试需要访问 Rails 环境的助手(例如 request.fullpath)

    我有一个可以访问的助手request fullpath 在孤立的辅助测试中 request不可用 我应该怎么办 我可以以某种方式嘲笑它或类似的东西吗 我正在使用最新版本的 Rails 和 RSpec 这是我的助手的样子 def item a
  • 思考狮身人面像和控制台

    我在 webfaction 上思考 sphinx 时遇到问题 当我在 osx 上本地执行时没有问题 I search gt gt ThinkingSphinx 搜索 雷蒙德 我的回应是这样的 gt 有任何想法吗 thx sg 如果你还没有
  • 在 Rails 中实现多个字段的自动完成

    我有一个应用程序 它实现了群组功能 每个小组有n名成员 此外 每个组都有一个组特定的个人资料图片 我已经能够实现组功能的自动完成 仅记住组名称 我已经参考了以下教程 http railsforum com viewtopic php id
  • 如何找到查询结果的大小

    我在 Rails 中有以下查询 records Record select y id source where source gt source y id gt y id group y id source having count 1 如
  • NoMethodError 未定义方法“名称” for nil:NilClass

    我有两个模型帖子和类别 我试图在我的索引和帖子显示视图中显示每个帖子的类别名称 我正在使用表连接 但问题是 虽然在我的显示视图中类别显示正确 但它在索引视图中给出了 NoMethodError undefined method name f
  • 抑制 Rspec 3 的回溯

    我正在使用 rspec 3 2 0 和 capybara 2 4 4 并在我的 spec helper rb 文件中如下所示 config full backtrace false 对于大多数错误 我都会得到回溯 例如 Failure Er
  • Rails 3 默认作用域、可覆盖的作用域

    我遇到的情况是现有应用程序的行为正在发生变化 这让我非常头疼 我的应用程序有照片 照片有一个状态 batch queue or complete 应用程序中的所有现有照片都是 完整的 99 的情况下 我只需要显示完整的照片 并且在所有现有代
  • Bootstrap shown.bs.tab 事件不起作用

    我正在使用灵活的模板 http the8guild com themes html flexy v1 7 stylesPage html 使用引导程序 并且我无法让选项卡上的 shown bs tab 事件正常工作 我已经成功让它发挥作用J
  • 如何自定义 Mailboxer 电子邮件的模板?

    它会自动发送电子邮件 其中写着 You have a new message subject You have received a new message Body Visit http example com and go to you
  • Mongoid 命名范围比较同一文档中的两个时间字段

    我需要在 Mongoid 中创建一个命名范围来比较同一文档中的两个时间字段 例如 scope foo where gt updated at gt gt checked at 这显然不会像它对待的那样起作用 checked at作为一个符号

随机推荐

  • 为什么 PHPexcel 在日期字段中插入单引号?

    我正在尝试使用 PHPExcel 将日期插入单元格 这是我的代码 include xlsx Classes PHPExcel php include xlsx Classes PHPExcel Calculation php include
  • Git 签出到特定目录

    所以 目前我正在努力合并两个分支 A and B 我正在合并到分支B 但我已将项目重组到不同的目录中 并且想做一个git checkout A path fileToGet各种各样的 意图是覆盖 但是变成了我的分支中的不同目录 为了保留文件
  • 解析 2 位数年份:使用未知日期模式设置基准日期

    用户将以不同模式输入日期到我的应用程序 对于两位数年份 他还必须确定枢轴日期 Example 图案 yy MM dd基准日期 70 我以编程方式添加当前千年和上个世纪以获得更多动态 gt 1970 69 04 22变成2069 04 22
  • 在没有“应用程序许可”的情况下获取访问者的 Facebook 信息——Yelp 是如何做到的?

    好的 我花了几个小时仔细研究有关 xFBML Open Graph 等的分散的 FB 文档 其中大部分似乎已被弃用 无论如何 当访问者访问我的网站 假设他们已经登录 FB 时 我试图获取他们的 Facebook 用户 ID 或姓名 图片或其
  • 连接 JSONArray

    我在用JSON数组 http www json org javadoc org json JSONArray html在下面org json包裹 我的第一个 JSONArray 是这样的 249404 VPR249404 249403 VP
  • C++ 中的作用域和返回值

    我重新开始使用 c 并正在考虑变量的范围 如果我在函数内有一个变量 然后我返回该变量 那么该变量在返回时不会因为它所在的作用域已结束而 死亡 吗 我已经尝试过使用返回字符串的函数 它确实有效 谁能解释一下吗 或者至少给我指出一些可以向我解释
  • 使用自适应布局的 UILabel 的不同字体大小

    在 Xcode 6 中 我们有一个称为自适应布局的新功能 通过使用它 我创建了一个新项目 在其中我需要根据布局具有不同的字体大小 在 iPhone 3 5 英寸屏幕中 我必须将字体大小设置为 17pt 而 iPhone 中的其他屏幕大小必须
  • 让 Grails 监听外部 IP 地址

    我启动了一个 Grails 应用程序来侦听默认端口 8080 并以 root 身份运行 grails 以侦听端口 80 grails Dserver port 80 run app 这在本地主机上运行得很好 但是当我从外部 IP 地址访问它
  • 动态获取 docker-compose 创建的正在运行的容器名称

    当我运行 docker compose 时 它 会创建一个 Web 容器和 postgres 容器 我想通过类似的方式手动触发我的 Django 测试运行 docker compose run web python manage py te
  • 对于系统文本的多语言支持 x 种语言来说,这是一个很好的设计吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这个实现的扩展性是否良好 要求是 系统必须支持x种语言 其中 x will 企业可以翻译的尽可能多的语言 所有系统维护的值 页面内容 电子邮件内
  • 使用 AVPlayer 传输音频

    当在表视图中选择一行但它不播放时 我尝试使用 AVPlayer 播放 URL 中的音频 我究竟做错了什么 这是代码 void tableView UITableView tableView didSelectRowAtIndexPath N
  • 如何在 Xcode 中使用 boost::multi precision::float128

    我正在尝试在 xCode 项目中使用 boost multi precision float128 我的编译器版本是 Apple clang 版本 11 0 0 clang 1100 0 20 17 目标 x86 64 apple darw
  • 检查模型是否存在,如果在 Laravel 中找不到则继续路由

    我有两个模型 我不想在其 URL 前面添加前缀 例如 用户和帖子 如果我有一个网址https example com title of the post https example com title of the post and htt
  • 正确确定日期字符串是否是该格式的有效日期

    我从 API 收到一个日期字符串 其格式为yyyy mm dd 我目前正在使用正则表达式来验证字符串格式 该格式工作正常 但我可以看到在某些情况下 根据字符串它可能是正确的格式 但实际上是无效的日期 IE 2013 13 01 例如 PHP
  • R包已安装但无法加载?

    我在 R 中安装了 digest 包 gt install packages digest Installing package into C Users user Documents R win library 3 3 as lib is
  • 为什么 Replace() 在我的 Python 函数中不起作用? [复制]

    这个问题在这里已经有答案了 这是实际代码 def replace exception chars string exception chars dict Old New old new exception chars keys list e
  • 如何更改时间选择器对话框片段的默认配色方案?

    我正在尝试更改时间选择器对话框片段的默认颜色 现在我不知道我应该做什么 这就是我设法将我的主题设置为 没有actionBar but this is the dialog i get 这是我的 xml 样式文件
  • 睡眠或暂停 NSThread

    我正在创建一个新线程 它每隔一定时间就运行我的方法之一 现在我正在做的事情如下 NSThread thread NSThread alloc initWithTarget self selector selector setUpTimerT
  • 如何向 clang-cl 添加 std=c++11 标志?

    我尝试在Windows下使用clang cl编译C 11程序 Clang cl 是 clang 的包装器 以便与 cl Visual Studio 编译器 更加兼容 我尝试添加 std c 11 and std c 11并且都被拒绝了 这并
  • Ruby on Rails:我的实际目标是什么?

    我一直在 Ruby on Rails 3 中构建应用程序 并且开始担心性能优化 现在我希望我的问题对于这个网站来说不太主观 但我对事实感兴趣 而不是讨论 所以这里是 虽然我试图让视图渲染得更快 但有一件事我根本不知道 我的目标是什么 给定一