CentOS 上 GitLab 资源占用优化实操
一 快速定位与紧急止血
free -hps aux --sort=-%mem | head -20sudo gitlab-ctl restart pumasudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
二 关键配置优化清单
puma['worker_processes'] = 2
puma['worker_memory_limit_min'] = "1024MB"
puma['worker_memory_limit_max'] = "2048MB"
puma['worker_memory_killer'] = {
'max_requests' => 5000,
'max_ram' => "2048MB",
'check_interval' => 60
}
sidekiq['max_concurrency'] = 15
sidekiq['min_concurrency'] = 5
postgresql['shared_buffers'] = "4GB"
postgresql['max_worker_processes'] = 8
unicorn['worker_timeout'] = 60
/etc/gitlab/gitlab.rb 后执行:sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
以上参数需结合实例规格与并发量逐步微调,优先控制 Puma 与 Sidekiq 的并发与内存上限,其次再调数据库缓存。
三 系统层面与架构优化
四 不同规格机器的起步配置建议
| 服务器规格 | Puma workers | 单 worker 内存上限 | Sidekiq 并发 | PostgreSQL shared_buffers |
|---|---|---|---|---|
| 4 核 8GB | 2 | 1024–1536MB | 10–15 | 2GB |
| 8 核 16GB | 2–3 | 1536–2048MB | 15–20 | 4GB |
| 16 核 32GB | 3–4 | 2048MB | 20–25 | 8GB |
| 说明: |
五 维护与自动化
free -h、ps aux --sort=-%mem | head -20sudo gitlab-ctl tailsudo gitlab-rake gitlab:memorycrontab -e
0 3 * * * /usr/bin/gitlab-ctl restart puma