sudo gitlab-ctl restart puma命令重啟Puma,可立即釋放其占用的內存(如某案例中從13GB降至1GB)。注意:此操作會導致短暫服務中斷。sudo 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 # 永久生效
Swap空間能緩解內存壓力,防止系統崩潰。/etc/gitlab/gitlab.rb文件限制Puma的資源占用,避免單個Worker消耗過多內存:puma['worker_processes'] = 2 # 根據CPU核心數設置(建議等于或略小于核心數)
puma['worker_memory_limit_min'] = "1024MB" # 單個Worker最小內存
puma['worker_memory_limit_max'] = "2048MB" # 單個Worker最大內存
puma['worker_memory_killer'] = {
'max_requests' => 5000, # 每處理5000個請求重啟Worker
'max_ram' => "2048MB", # 內存超過2GB時重啟Worker
'check_interval' => 60 # 每60秒檢查一次
}
應用配置:sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart。sidekiq['max_concurrency'] = 15 # 默認25,建議調整為10-15
sidekiq['min_concurrency'] = 5 # 最小并發數
應用配置:sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart。postgresql['shared_buffers'] = "1GB" # 根據服務器內存調整(如16GB內存設為2GB)
應用配置:sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart。htop(交互式進程監控)或free -h(內存使用概況)命令查看內存占用情況,及時發現異常進程。crontab -e
添加以下內容(每日3點重啟):0 3 * * * /usr/bin/gitlab-ctl restart puma
注意:自動重啟會影響正在處理的請求,建議在低峰期執行。sudo apt update
sudo apt upgrade gitlab-ce # 社區版
或參考GitLab官方升級文檔。sudo gitlab-ctl tail或journalctl -u gitlab命令查看GitLab日志,尋找內存泄漏的線索(如頻繁的GC錯誤、異常進程)。gitlab-rake gitlab:memory命令生成內存使用報告,或通過ps aux --sort=-%mem | head -20查看占用內存最高的進程。valgrind工具分析內存泄漏位置(需開發人員介入)。通過以上步驟,可有效解決Debian系統中GitLab的內存泄漏問題,從緊急緩解到長期優化,確保服務穩定運行。