Run puma on two web/api/git nodes in production for performance testing
C3
Production Change - Criticality 3Change 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