Ruby on Rails问题 - 我如何测量请求首次点击app时的响应时间? (例如使用'基准')

时间:2009-12-16 06:14:45

标签: ruby-on-rails performance http benchmarking

背景 - 我正在通过我的Rails应用程序向浏览器提供文件(文本,图像),因为用户也需要进行身份验证。这些文件在文件系统上,但引用在数据库中,因为我正在使用PAPERCLIP。使用AUTHLOGIC进行身份验证。我发现响应时间非常糟糕,因为每个HTML /图像等请求必须通过Rails层我猜AUTHLOGIC,PAPERCLIP然后流回来。

Q1 - 如何从HTTP请求到达rails应用程序的第一点开始直到它准备好开始流回请求时(即避免网络流量变化)? / strong>

我在我的控制器中使用“基准”但是我很确定我错过了其他延迟,例如:通过AuthLogic进行身份验证等...例如,我大致正在做

  def find
    self.class.benchmark("BENCHMARK REPORT") do
      search_path = params[:path] * "/"
      webfile = Webfile.find_by_path( search_path )
      if webfile
        send_file webfile.file.path , :type => webfile.file_content_type, :disposition => 'inline'
      else
        render :text => "COULD NOT FIND YOUR FILE WITH PATH = #{params [:path]}"
      end
    end
  end

Q2 - 鉴于我希望用户对HTML&相关文件(CSS,图像),然后页面需要,是否有任何明显的方法来获得一个数量级的改进?我想我可以在会话状态保存HTML页面需要的子文件列表&得到它的文件位置路径,直到后续请求到来,那将是一些数据库查找(以牺牲使用会话状态为代价)?

感谢

1 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。一个好的方法是在你的应用程序中安装New Relic插件,进行这种性能监控。您需要付费才能在生产中使用它,但它可以在本地免费用于开发基准测试和分析。

虽然我没有亲自使用过它们,但还有其他几家提供类似产品的公司。

此外,rails现在附带一些脚本来进行基准测试和分析。查看script/performance

中的脚本