summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Vosmaer <jacob@gitlab.com>2016-05-24 17:07:41 +0200
committerJacob Vosmaer <jacob@gitlab.com>2016-05-24 17:07:41 +0200
commitcee07c5919e1a9c792e44c261dd8abfd76a2a993 (patch)
treeb5d7c25f7d7fa5eb003ae81bcd08d2102d0f0042
parentbaa9c66057fccefce05b9f01009942fb079fee22 (diff)
downloadgitlab-ce-cee07c5919e1a9c792e44c261dd8abfd76a2a993.tar.gz
Measure proxy timing: needs influxdb code
-rw-r--r--config/initializers/proxy_timing.rb1
-rw-r--r--lib/gitlab/middleware/proxy_timing.rb22
2 files changed, 23 insertions, 0 deletions
diff --git a/config/initializers/proxy_timing.rb b/config/initializers/proxy_timing.rb
new file mode 100644
index 00000000000..9161bd9b6c9
--- /dev/null
+++ b/config/initializers/proxy_timing.rb
@@ -0,0 +1 @@
+Rails.application.config.middleware.use(Gitlab::Middleware::ProxyTiming)
diff --git a/lib/gitlab/middleware/proxy_timing.rb b/lib/gitlab/middleware/proxy_timing.rb
new file mode 100644
index 00000000000..9094d6b1e7d
--- /dev/null
+++ b/lib/gitlab/middleware/proxy_timing.rb
@@ -0,0 +1,22 @@
+# 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 ProxyTiming
+ def initialize(app)
+ @app = app
+ end
+
+ def call(env)
+ proxy_start = env['HTTP_GITLAB_WORHORSE_PROXY_START'].to_f / 1_000_000_000
+ if proxy_start > 0
+ # send measurement
+ puts "\n\n\n#{(Time.now - proxy_start).to_f}\n\n\n"
+ end
+ @app.call(env)
+ end
+ end
+ end
+end