一、硬件配置优化
二、GitLab配置优化
/etc/gitlab/gitlab.rb,减少worker进程数(避免内存过度消耗),例如:puma['worker_processes'] = 2(2-4核服务器推荐);降低每个worker的线程数,例如:puma['max_threads'] = 4、puma['min_threads'] = 2(平衡并发与内存占用)。sidekiq['max_concurrency'] = 10(8GB服务器推荐)、sidekiq['min_concurrency'] = 5;合并队列进程(减少内存碎片):sidekiq['queue_groups'] = ['*'](所有队列共享一个进程)。redis['maxmemory'] = '2gb'(根据服务器内存调整),并设置淘汰策略(如volatile-lru)。gitlab.rb中禁用:gitlab_rails['auto_devops_enabled'] = false、prometheus_monitoring['enable'] = false(减少服务进程对资源的占用)。三、数据库(PostgreSQL)优化
gitlab.rb中的PostgreSQL配置,优化内存使用:postgresql['shared_buffers'] = "512MB"(占总内存的1/4-1/2,避免占用过多内存)、postgresql['max_worker_processes'] = 4(限制并行查询数,避免IO争抢)、postgresql['work_mem'] = "32MB"(每个查询的临时内存,提升复杂查询性能)、postgresql['maintenance_work_mem'] = "512MB"(索引维护、VACUUM等操作的内存)。gitlab-rake gitlab:db:index_usage:analyze)分析索引使用情况,删除未使用的索引;对常用查询字段(如project_id、user_id)添加索引,提升查询速度。四、存储空间优化
gitlab-rake gitlab:clean清理临时文件、失败的任务文件;通过GitLab控制台(gitlab-console)执行Repository.cleanup清理未被引用的仓库对象(如旧的分支、标签)。git-lfs后,通过git lfs track "*.psd"标记大文件类型,提交并推送至远程仓库。gitlab.rb中的git_data_dir参数,将仓库数据存储到非系统分区(如/data/gitlab),避免系统分区空间不足;例如:gitlab_rails['git_data_dir'] = "/data/gitlab",修改后执行sudo gitlab-ctl reconfigure生效。gitlab.rb中配置object_store['enabled'] = true,并设置对应的存储路径、访问密钥。五、系统内核与Swap优化
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab # 永久生效
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p # 立即生效
ulimit限制GitLab相关进程的最大虚拟内存(如5GB),避免单个进程占用过多内存导致系统崩溃;在/etc/security/limits.conf中添加:gitlab * hard as 5242880 # 5GB(单位:KB)
六、监控与维护
/-/metrics端点也可提供Prometheus格式的监控数据。gitlab-rake gitlab:cleanup清理无用数据;每月检查GitLab版本(通过gitlab-rake gitlab:env:info),及时升级至最新稳定版本(获取性能优化和安全补丁);每季度备份数据(使用gitlab-rake gitlab:backup:create),并测试备份恢复流程(确保数据安全)。/var/log/gitlab目录下的日志文件(如gitlab-rails/production.log、sidekiq.log),查找慢查询、错误信息(如数据库连接超时、后台任务失败),针对性解决问题(如优化慢查询、增加Sidekiq并发数)。