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