GitLab在Debian上的性能调优策略
硬件是GitLab性能的基础,需根据团队规模合理配置:
vm.swappiness降低到10-20,减少内存交换;net.core.somaxconn增加到1024,提升并发连接能力)。配置文件是性能调优的核心,需重点调整以下参数:
puma['threads_min'] = 4、puma['threads_max'] = 16:调整Puma线程数(根据CPU核心数,建议核心数×2+2),提升并发处理能力。puma['worker_timeout'] = 60、sidekiq['timeout'] = 300:设置合理超时时间,避免长时间挂起的请求占用资源。nginx['keepalive_timeout'] = 65:增加Nginx长连接超时,减少连接建立开销。gitlab_rails['redis_cache_instance'] = "redis://127.0.0.1:6379",加速频繁访问的数据(如用户会话、项目元数据)。gitlab_rails['object_store']['enabled'] = true、gitlab_rails['object_store']['connection'] = {...},将大附件、备份存储到对象存储,减轻主存储负担。postgresql['shared_buffers'] = "25% of total RAM":设置PostgreSQL共享缓冲区为内存的25%-40%,提升查询缓存效率。postgresql['work_mem'] = "4MB"、postgresql['maintenance_work_mem'] = "64MB":调整工作内存,优化复杂查询(如代码搜索、差异对比)。GitLab依赖PostgreSQL,需针对性优化:
shared_buffers、work_mem外,增加max_worker_processes(根据并发用户数,建议设置为CPU核心数的1-2倍),提升并行查询能力。gitlab-rails db:prepare优化数据库表结构,gitlab-rails db:migrate:status检查迁移状态,确保数据库健康。/var/opt/gitlab)迁移至SSD,提升代码读写、日志记录速度。sudo gitlab-rake gitlab:backup:cleanup清理旧备份(保留最近7天)、sudo gitlab-rake gitlab:ci:cleanup清理旧CI/CD作业(保留最近30天)、sudo journalctl --vacuum-time=2weeks清理旧日志,减少存储占用和IO压力。redis['maxmemory'] = "4GB"、redis['maxmemory-policy'] = "allkeys-lru"),限制内存使用并设置淘汰策略,提升缓存命中率。.gitlab-ci.yml中配置缓存,如cache: key: ${CI_COMMIT_REF_SLUG} paths: - vendor/bundle,缓存依赖包(如Ruby gems、Node.js modules),减少重复下载时间。upstream gitlab { server 192.168.1.101:8080; server 192.168.1.102:8080; }。gitlab_rails['log_level'] = "info"),定期清理过期日志(gitlab_rails['log_rotate_frequency'] = "daily"、gitlab_rails['log_max_size'] = "200MB"),避免日志文件过大占用存储。gitlab_rails['backup_keep_time'] = 604800,保留7天),并定期测试恢复流程,确保数据安全。.gitlab-ci.yml中设置parallel: 4,将任务拆分为多个并行job,缩短构建时间。cache关键字缓存依赖(如cache: paths: - node_modules/),避免每次构建都重新安装依赖。