Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2016-05-26 20:05:26 +0300
committerYorick Peterse <yorickpeterse@gmail.com>2016-05-26 20:05:26 +0300
commit9bdfc98242f6fa039b73f47e6105faded1027eb1 (patch)
tree32a6f3b1b8ace2f45c33865b4542dcdf78c69268 /lib/gitlab
parentd4d0fdb4799d3b1653e9f1a673b4dc6b8c1ac2f8 (diff)
parent5771114f9b5dba9c17b273a5dec0ef6900f6da9d (diff)
Merge branch 'measure-proxy-timing' into 'master'
Measure proxy flight time See merge request !4278
Diffstat (limited to 'lib/gitlab')
-rw-r--r--lib/gitlab/middleware/rails_queue_duration.rb24
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