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(查看磁盘)等命令定期检查资源占用,及时发现瓶颈。