繁体   English   中英

Ruby on Rails问题-如何从请求首次命中应用程序时开始衡量响应时间? (例如,使用“基准”)

[英]Ruby on Rails question - how can I measure response time from when request first hits app?? (e.g. using 'benchmark')

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

问题1-如何获得基准时间,从HTTP请求到达Rails应用程序的第一点开始,一直到准备开始流回请求的时间(即避免网络流量变化)开始?

我在控制器中使用“基准”,但是我可以肯定我还错过了其他延迟,例如:通过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

问题2-鉴于我希望用户对HTML和相关文件(CSS,图像)进行身份验证,然后对页面进行身份验证,是否有任何明显的方法可以使数量级得到改善? 我想我可以在会话状态中保存HTML页面所需的子文件列表并获取其文件位置路径,直到后续请求到来为止,这将需要一些数据库查找(以使用会话状态为代价)?

谢谢

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

尽管我还没有亲自使用过类似产品,但还有其他几家公司提供类似产品。

Rails现在还带有一些脚本来进行基准测试和性能分析。 查看script/performance中的script/performance

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM