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/),避免每次構建都重新安裝依賴。