Skip to content

Run puma on two web/api/git nodes in production for performance testing

Production Change - Criticality 3 C3

Change Objective Run puma on two web/api/git nodes in production for performance testing
Change Type ConfigurationChange
Services Impacted List services
Change Team Members Name of the engineers involved in the change
Change Severity C3
Change Reviewer or tested in staging A colleague who will review the change or evidence the change was tested on staging environment
Dry-run output If the change is done through a script, it is mandatory to have a dry-run capability in the script, run the change in dry-run mode and output the result
Due Date Date and time in UTC timezone for the execution of the change, if possible add the local timezone of the engineer executing the change
Time tracking To estimate and record times associated with changes ( including a possible rollback )

Overview

Puma is running on canary, the next phase for enabling it on gitlab.com will be to select some nodes on production and run it there. 2 nodes will be selected in the web/api/git fleet:

  • web-01 / web-02
  • git-01 / git-02
  • api-01 / api-02

In canary it was validated that we can cleanly switch between puma and unicorn, while taking live traffic without errors because of the new readiness health check.

Procedure

  • Apply node overrides to the following hosts:
  • web-01 / web-02
  • git-01 / git-02
  • api-01 / api-02
knife node edit <node name>

    "omnibus-gitlab": {
      "gitlab_rb": {
        "unicorn": {
          "enable": false
        },
        "puma": {
         "enable": true,
         "exporter_enabled": true,
         "exporter_address": "0.0.0.0",
         "listen": "0.0.0.0",
         "worker_processes": 14,
         "worker_timeout": 60,
         "min_threads": 1,
         "max_threads": 4
        },
        "gitlab-rails": {
          "db_pool": 4
        }
      }
    },


Rollback

knife node edit <node name>
# remove override
Edited by John Jarvis