diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2016-05-26 17:05:26 +0000 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2016-05-26 17:05:26 +0000 |
commit | 9bdfc98242f6fa039b73f47e6105faded1027eb1 (patch) | |
tree | 32a6f3b1b8ace2f45c33865b4542dcdf78c69268 /lib | |
parent | d4d0fdb4799d3b1653e9f1a673b4dc6b8c1ac2f8 (diff) | |
parent | 5771114f9b5dba9c17b273a5dec0ef6900f6da9d (diff) | |
download | gitlab-ce-9bdfc98242f6fa039b73f47e6105faded1027eb1.tar.gz |
Merge branch 'measure-proxy-timing' into 'master'
Measure proxy flight time
See merge request !4278
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/middleware/rails_queue_duration.rb | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/gitlab/middleware/rails_queue_duration.rb b/lib/gitlab/middleware/rails_queue_duration.rb new file mode 100644 index 00000000000..56608b1b276 --- /dev/null +++ b/lib/gitlab/middleware/rails_queue_duration.rb @@ -0,0 +1,24 @@ +# This Rack middleware is intended to measure the latency between +# gitlab-workhorse forwarding a request to the Rails application and the +# time this middleware is reached. + +module Gitlab + module Middleware + class RailsQueueDuration + def initialize(app) + @app = app + end + + def call(env) + trans = Gitlab::Metrics.current_transaction + proxy_start = env['HTTP_GITLAB_WORHORSE_PROXY_START'].presence + if trans && proxy_start + # Time in milliseconds since gitlab-workhorse started the request + trans.set(:rails_queue_duration, Time.now.to_f * 1_000 - proxy_start.to_f / 1_000_000) + end + + @app.call(env) + end + end + end +end |