GitLab在Ubuntu上的資源限制及優化策略
GitLab在Ubuntu上的穩定運行需要滿足以下基礎硬件條件:
若資源受限(如測試環境),可通過調整配置降低內存占用(詳見下文“內存優化”部分),但生產環境建議滿足推薦配置。
GitLab運行需調整Ubuntu系統的用戶資源限制,避免因文件句柄或進程數不足導致服務異常:
ulimit
命令快速修改當前會話的限制(僅對當前終端有效):ulimit -Sn 4096 # 設置單進程最大文件句柄數為4096
ulimit -u 4096 # 設置單用戶最大進程數為4096
/etc/security/limits.conf
文件,添加以下內容(針對root用戶,GitLab主要服務均以root身份運行):root soft nofile 4096
root hard nofile 4096
root soft nproc 4096
root hard nproc 4096
修改后需重啟服務器使設置生效。通過調整GitLab核心組件的配置,可有效降低內存占用(適用于2GB及以上內存環境):
puma['worker_processes']
;若使用Unicorn,修改unicorn['worker_processes']
):puma['worker_processes'] = 2 # 推薦值:2-4(根據CPU核心數調整)
sidekiq['concurrency'] = 5 # 推薦值:5-10(根據內存大小調整)
postgresql['shared_buffers'] = "256MB" # 推薦值:256MB-512MB
gitlab_rails['db_pool'] = 5 # 推薦值:5-10(不超過數據庫最大連接數)
redis['maxmemory'] = "512MB" # 推薦值:512MB-1GB
需修改Redis配置文件/var/opt/gitlab/redis/redis.conf
,添加淘汰策略:maxmemory-policy allkeys-lru # 當內存滿時,刪除最近最少使用的鍵
修改完成后,執行sudo gitlab-ctl reconfigure
應用配置,再重啟GitLab服務:sudo gitlab-ctl restart
。sudo fallocate -l 2G /swapfile # 創建2GB Swap文件
sudo chmod 600 /swapfile # 設置權限
sudo mkswap /swapfile # 格式化為Swap
sudo swapon /swapfile # 啟用Swap
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab # 永久生效
htop
(實時監控)、free -m
(查看內存)、df -h
(查看磁盤)等命令定期檢查資源占用,及時發現瓶頸。