Memory Undersizing in Reference Architecture for Rails configuration & GCP example
The configuration examples in our reference architectures from 2k and above are undersized for memory. The current recommendations for GitLab Rails servers are as follows:
| Ref Arch | Configuration | GCP type | GCP size | AWS type | AWS size |
|---|---|---|---|---|---|
| 2k | 8 vCPU, 7.2 GB mem | n1-highcpu-8 | 8 CPU 7.2GB mem | c5.2xlarge | 8 CPU 16GB mem |
| 3k | 8 vCPU, 7.2 GB mem | n1-highcpu-8 | 8 CPU 7.2GB mem | c5.2xlarge | 8 CPU 16GB mem |
| 5k | 16 vCPU, 14.4 GB mem | n1-highcpu-16 | 16 CPU 14.4GB mem | c5.4xlarge | 16 CPU 32GB mem |
| 10k | 32 vCPU, 28.8 GB mem | n1-highcpu-32 | 32 CPU 28.8GB mem | c5.9xlarge | 36 CPU 72GB mem |
| 25k | 32 vCPU, 28.8 GB mem | n1-highcpu-32 | 32 CPU 28.8GB mem | c5.9xlarge | 36 CPU 72GB mem |
| 50k | 32 vCPU, 28.8 GB mem | n1-highcpu-32 | 32 CPU 28.8GB mem | c5.9xlarge | 36 CPU 72GB mem |
Problem Description
Taking the 10k reference architecture as an example:
- With 32 CPUs, GitLab will configure 32 Puma workers by default
- Each worker requires 1.2GB of memory by default
- This means the server needs at least 38.4 GB just for Puma workers alone (32 workers × 1.2GB)
- However, we only recommend 28.8 GB of total memory
If customers follow this recommendation, they will definitely hit memory limits. We have already received a support ticket related to this issue (internal zd ref).
Additionally, the configuration appears to be based on GCP instance types, which are undersized for memory compared to the AWS and Azure examples.
Proposed review
Proposed Actions
- Update the configuration recommendations to provide adequate memory
- Update the GCP instance type examples to match memory requirements
Edited by Andrew Winata