硬件配置优化
GitLab核心配置调整
/etc/gitlab/gitlab.rb,减少工作进程数(puma['worker_processes'] = 2,2-4核机器建议2个)和每个进程的线程数(puma['max_threads'] = 4、puma['min_threads'] = 2),降低内存占用(默认配置可能为CPU核心数的2倍,对小内存服务器不友好)。sidekiq['max_concurrency'] = 10、sidekiq['min_concurrency'] = 5),并通过sidekiq['queue_groups'] = ['*']让所有队列共享一个进程,减少内存消耗(默认25个并发对8GB机器来说过高)。unicorn['worker_processes']为CPU核心数+1(如4核机器设为5),避免过多进程竞争资源。数据库性能调优
postgresql['shared_buffers'] = "512MB",默认可能为总内存的25%,调整为10%-25%更合理)、减少工作进程数(postgresql['max_worker_processes'] = 4),避免数据库成为性能瓶颈;定期执行VACUUM和ANALYZE命令,清理无用数据并优化查询计划。缓存策略优化
gitlab_rails['redis_cache_instance'] = "redis://127.0.0.1:6379"),并设置内存限制(redis['maxmemory'] = "2GB"),避免Redis占用过多内存;优先使用Redis而非本地内存缓存,提升缓存命中率。git lfs install)管理,将大文件存储在独立存储路径(而非Git仓库),减少仓库体积和克隆时间。存储空间优化
fallocate -l 2G /swapfile→chmod 600 /swapfile→mkswap /swapfile→swapon /swapfile→添加到/etc/fstab);调整vm.swappiness=10(默认60),减少系统过度使用Swap的倾向。gitlab-rake gitlab:cleanup:orphan_repository_files清理孤儿文件,使用git filter-repo工具去除仓库历史中的大文件(如误提交的GB级文件),并通过GitLab控制台执行Repository.repack压缩仓库数据。/etc/gitlab/gitlab.rb中的git_data_dir,将仓库数据存储到单独的分区(如/data/gitlab),避免占用系统分区空间;对于大附件、备份文件,配置对象存储(如Amazon S3、MinIO),减轻服务器存储压力。监控与维护
htop、free -h、gitlab-ctl status命令手动检查资源使用情况。gitlab_rails['log_rotate_frequency'] = 'daily'、gitlab_rails['log_max_size'] = '200MB'),避免日志文件过大占用磁盘空间;定期清理过期日志(如每月清理一次)。