【问题标题】:Displaying Rails response time in view在视图中显示 Rails 响应时间
【发布时间】:2009-12-18 17:21:09
【问题描述】:

我正在尝试为我的 Rails 应用程序设置自定义 Pingdom 监控,并希望制作如下所示的 XML 响应:

<?xml version="1.0" encoding="UTF-8"?>
<pingdom_http_custom_check>
  <status>OK</status>
  <response_time>210.22</response_time>
</pingdom_http_custom_check>

其中 response_time 值是 Rails 呈现 XML 响应所用的时间。

我找到了一些 resources 用于使用 Mongrel 执行此操作,但我使用的是 Apache Passenger。

我有一个作为 Sinatra-Metal 端点实现的解决方案,如下所示:

class Pingdom < Sinatra::Base  
  set :views, "#{RAILS_ROOT}/app/views/metal"
  get '/pingdom' do
    @start_time = Time.now
    builder :pingdom
  end
end

然后我有一个构建器视图:

xml.instruct!
xml.pingdom_http_custom_check do |pingdom_http_custom_check|
  pingdom_http_custom_check.status("OK")
  pingdom_http_custom_check.response_time((Time.now-@start_time)*1000)
end

(注意 response_time 以毫秒为单位)。

这个实现足以检查应用程序是否启动,但它是一个金属端点这一事实意味着它实际上并没有命中主 Rails 应用程序,因此并不是一个很好的衡量当前响应时间的方法我的应用程序。

有人对更好的方法有什么好的建议吗?

干杯,阿方

【问题讨论】:

  • 你到底想计时什么?总响应时间需要从客户端测量。当您处于呈现响应的中间时,如何计算出某些事情需要多长时间?也许您应该在 Apache 级别进行拦截。
  • 我想我正在寻找两件事:衡量应用程序的当前渲染时间以及应用程序是否启动。或许 New Relic 更适合前者。

标签: ruby-on-rails ruby monitoring sinatra


【解决方案1】:

响应时间表示什么?您是否考虑过使用侦察兵或新遗物之类的东西?

【讨论】:

    【解决方案2】:

    这个 railscast 展示了一种实现类似于 Rack 中间件的方法,可能不应该很难修改以满足您的需求。

    http://railscasts.com/episodes/151-rack-middleware

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 1970-01-01
      • 2013-02-18
      • 2012-12-09
      • 2021-05-31
      • 2018-04-02
      相关资源
      最近更新 更多