Add rack-timeout for Puma

Currently, GitLab officially only supports the Unicorn webserver.

An effort is underway to additionally support Puma, a multithreaded rack server. Check the Multithreaded App Server for progress.

One of the ways that unicorn and puma differ is that Unicorn will automatically kill any workers than exceed a maximum timeout. This is good for solving the (request) stopping problem but obviously also has disadvantages (ie, long polling or websocket requests cannot be handled).

Because Puma's architecture is less constrained in this regard, it does not impose a request timeout.

Since we assume that bad requests will timeout within 60 seconds, and since we (unfortunately) continue to kill workers at 60 seconds regularly in Production, we should impose this limit on Puma requests too, using rack-timeout: https://github.com/heroku/rack-timeout

Note that this approach carries risk with it too. Some of the concerns are documented here: https://github.com/heroku/rack-timeout/blob/master/doc/risks.md

cc @stanhu

Edited Nov 01, 2018 by Andrew Newdigate
Assignee Loading
Time tracking Loading