Adjust Puma Worker Killer behavior

Problem to solve

Improve the handling of Puma worker restarts.

Intended users

Further details

In order to recycle Puma workers to avoid memory leaks, we currently use a puma_worker_killer with a low memory threshold. This makes sure that we regularly recycle workers. But this has some undesired side-effects in that we may terminate workers too quickly on busy instances (for example, gitlab.com) or too slowly on lightly-used instances.

This leads to a lot of over-tuning of the memory limit to get the desired restart rate.

Proposal

Rather than aggressively tune the worker killer memory limit, we can enable regular timer-based restarts of the Puma workers. This will allow for easier operation while still keeping Ruby memory and performance leaks contained.

Documentation

Testing

What does success look like, and how can we measure that?

Links / references

Assignee Loading
Time tracking Loading