當GitLab因內存不足導致服務卡頓或崩潰時,啟用Swap分區是最快速的臨時解決方案,可為系統提供虛擬內存緩沖。
dd if=/dev/zero of=/data/swap bs=512 count=8388616 # 創建512MB*8388616=4GB的Swap文件
mkswap /data/swap # 格式化為Swap分區
swapon /data/swap # 啟用Swap
/etc/fstab
文件,添加以下行:/data/swap swap swap defaults 0 0
vm.swappiness
參數(范圍0-100,值越小越傾向于使用物理內存):sysctl -w vm.swappiness=60 # 臨時生效
echo "vm.swappiness=60" >> /etc/sysctl.conf # 永久生效
通過修改GitLab的主配置文件/etc/gitlab/gitlab.rb
,可針對性降低內存占用:
unicorn['worker_processes'] = 2 # 最低2個,中型團隊建議4個
puma['worker_processes'] = 2 # 若使用Puma集群模式
sidekiq['max_concurrency'] = 10 # 根據CPU核心數調整(建議=CPU核心數*2)
postgresql['shared_buffers'] = "64MB" # 小內存服務器建議64-128MB
postgresql['max_worker_processes'] = 2 # 根據CPU核心數調整
puma['enable'] = false # 若使用Unicorn,可禁用Puma
GitLab對內存的需求隨用戶數量、倉庫規模增長而增加,升級硬件是最根本的解決方式:
gitlab_rails['smart_proxy'] = true # 啟用智能代理緩存
gitlab-rake gitlab:cleanup:artifacts # 清理artifacts(保留7天)
gitlab-rake gitlab:cleanup:logs # 清理日志(保留30天)
若使用Docker部署GitLab,可通過限制容器內存和優化鏡像減少內存占用:
--memory
參數(如4GB):docker run -d --memory=4g --memory-swap=4g -p 8080:80 -p 2222:22 -v /path/to/gitlab/config:/etc/gitlab -v /path/to/gitlab/logs:/var/log/gitlab -v /path/to/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
gitlab/gitlab-ce:alpine
),減少鏡像體積和內存占用。通過以上步驟,可逐步解決CentOS上GitLab的內存問題,從臨時緩解到長期優化,確保服務穩定運行。需根據實際服務器配置和團隊規模調整參數,避免過度優化導致性能下降。