默认 rails controller#action 执行时间是否可靠且正确?
Is default rails controller#action execution time reliable and correct?
为了测试我的执行时间,我使用了这段代码:
ActiveSupport::Notifications.subscribe 'process_action.action_controller' do |*args|
event = ActiveSupport::Notifications::Event.new(*args)
puts "Event received: #{event.duration}"
end
对于一个需要 137 毫秒的请求,它只显示 34 毫秒,但我在 postman 和 pingdom 中看到它需要 137 毫秒。
那么剩下的 100 毫秒时间用在哪里了?
见截图:
它说请求用了 25 毫秒,但是在 post man 中用了 90 毫秒,那么剩下的 65 毫秒去了哪里?
我知道这是因为网络和互联网速度对于完整渲染也很重要。
我只是想确认这是正确的时间还是这里遗漏了什么,例如,如果 ApplicationController 有一个过滤器:
before_action :method_name
那么它是同时考虑操作 "method_name" 还是仅考虑当前操作?
So where is rest of the 100ms time taking?
延迟。请求从邮递员(或 pingdom)实例到服务器(并返回)需要时间。 Rails 服务器无法知道这些延迟(事实上,就其而言它们并不存在),因此它不包括它们。
关于您的屏幕截图:
它不包括任何 before_action 或控制器的此类过滤器。因此,如果您的过滤器需要时间,则不会在此考虑。
所以你应该使用这个:
ActiveSupport::Notifications.subscribe 'process_action.action_controller' do |*args|
event = ActiveSupport::Notifications::Event.new(*args)
puts "Event received: #{event.duration}"
end
这也包括花在过滤器上的时间。
为了测试我的执行时间,我使用了这段代码:
ActiveSupport::Notifications.subscribe 'process_action.action_controller' do |*args|
event = ActiveSupport::Notifications::Event.new(*args)
puts "Event received: #{event.duration}"
end
对于一个需要 137 毫秒的请求,它只显示 34 毫秒,但我在 postman 和 pingdom 中看到它需要 137 毫秒。
那么剩下的 100 毫秒时间用在哪里了?
见截图:
它说请求用了 25 毫秒,但是在 post man 中用了 90 毫秒,那么剩下的 65 毫秒去了哪里?
我知道这是因为网络和互联网速度对于完整渲染也很重要。
我只是想确认这是正确的时间还是这里遗漏了什么,例如,如果 ApplicationController 有一个过滤器:
before_action :method_name
那么它是同时考虑操作 "method_name" 还是仅考虑当前操作?
So where is rest of the 100ms time taking?
延迟。请求从邮递员(或 pingdom)实例到服务器(并返回)需要时间。 Rails 服务器无法知道这些延迟(事实上,就其而言它们并不存在),因此它不包括它们。
关于您的屏幕截图:
它不包括任何 before_action 或控制器的此类过滤器。因此,如果您的过滤器需要时间,则不会在此考虑。
所以你应该使用这个:
ActiveSupport::Notifications.subscribe 'process_action.action_controller' do |*args|
event = ActiveSupport::Notifications::Event.new(*args)
puts "Event received: #{event.duration}"
end
这也包括花在过滤器上的时间。