Currently we have way too many workers using the "default" queue. Not only does this make monitoring harder, it also leads to the queue getting clogged by slow jobs. The easiest and most robust solution is to simply have every worker use its own queue. The "default" queue in turn must not be used, and we should add some sort of Rubocop rule to enforce this. The queue names should be similar to the worker class names, though they can be something different if it makes sense; as long as the name is descriptive enough.
Designs
Child items
...
Show closed items
Linked items
0
Link issues together to show that they're related or that one is blocking others.
Learn more.
@stanhu I would go as far as saying that this needs to be tackled in GitLab itself too: https://gitlab.com/gitlab-org/gitlab-ce/blob/8-13-stable/bin/background_jobs#L40. Is there a way we could do this in one location? Maybe have a file with all queues listed (for EE too) and then import it into the source installation script and we can do the same for omnibus?
@marin So for https://gitlab.com/gitlab-org/gitlab-ce/issues/23352 we'll probably need a configuration file specifying what settings to use for the various queues. How do you feel about also using that file to build the list of jobs to start in Omnibus? I'm thinking of using a YAML file of sorts that per queue lists the settings, even if none are needed. We can then enforce these queues being present using something like Rubocop or https://github.com/danger/danger. The config file would look something like:
Also worth mentioning: this change will require downtime. By changing workers to use different queues any existing jobs in the old queues won't be processed. This means we need to either move the jobs to the new queues, or take Unicorns down and let Sidekiq process everything; then deploy.