温馨提示×

如何在 CentOS 上优化 GitLab

小樊
41
2025-12-29 05:26:24
栏目: 智能运维

CentOS 上优化 GitLab 的实用清单

一 硬件与存储基础

  • 优先使用SSD/NVMe与充足内存,GitLab 为内存密集型应用;生产建议内存≥8GB(16GB+ 更佳)≥4 核 CPU,并尽量使用SSD提升 I/O。
  • 大仓库与高并发场景建议启用Gitaly 集群以分担存储与计算压力,提升稳定性与吞吐。
  • 大型仓库使用 Git LFS 管理二进制大文件,避免仓库膨胀与克隆缓慢。
  • 规划备份窗口与保留策略,使用内置工具定期备份,确保可快速恢复。

二 操作系统与内核参数

  • 文件描述符与进程限制:在 /etc/security/limits.conf 增加
    • * soft nofile 65535
    • * hard nofile 65535
      并在相关 PAM 会话配置中确保生效,避免“Too many open files”。
  • TCP/网络栈优化(/etc/sysctl.conf):
    • net.core.somaxconn = 65535
    • net.ipv4.tcp_max_syn_backlog = 65535
    • net.ipv4.ip_local_port_range = 1024 65535
    • net.ipv4.tcp_tw_reuse = 1
    • net.ipv4.tcp_fin_timeout = 30
    • vm.swappiness = 10(减少换页,优先使用物理内存)
      执行 sysctl -p 使配置生效。
  • 存储与文件系统:使用 ext4 等通用文件系统,挂载时启用 noatime 减少元数据写入;高并发/大仓库可考虑 RAID 提升吞吐与冗余。

三 GitLab 组件与 Rails 配置

  • 工作进程与超时(/etc/gitlab/gitlab.rb):
    • unicorn['worker_processes'] = <CPU 核心数的 1–2 倍>(如 4 核设为 4
    • unicorn['timeout'] = 300
  • 后台任务并发(Sidekiq):
    • sidekiq['concurrency'] = 25(按 CPU/内存与队列压力调优)
    • sidekiq['queues'] = ["default", "gitlab"]
  • 缓存策略:
    • gitlab_rails['cache_store'] = :memory_store, { size: 64.megabytes }(减轻数据库压力,视内存酌情增大)
  • 大仓库与 LFS:启用 Git LFS 管理大文件,降低仓库体积与网络传输压力。
  • 修改后执行 gitlab-ctl reconfigure 使配置生效。

四 网络 安全 与运维

  • 防火墙与端口:仅放行必要端口(示例)
    • firewall-cmd --permanent --add-service={http,https,ssh} && firewall-cmd --reload
    • 若自定义 SSH 端口(如 2222),需同步放行并配置 gitlab_rails['gitlab_shell_ssh_port'] = 2222
  • HTTPS 与证书:使用 Let’s Encrypt 获取免费证书,设置 external_url 'https://yourdomain.com' 并配置证书路径。
  • 认证与访问控制:优先SSH 密钥,可禁用密码登录;启用2FALDAP 集中认证与复杂密码策略。
  • 监控与告警:集成 Prometheus + Alertmanager 监控关键指标(请求延迟、Sidekiq 积压、Puma/Unicorn 进程、磁盘/IO 等),异常及时通知。
  • 备份与恢复:定期执行 gitlab-backup create(默认路径 /var/opt/gitlab/backups),恢复时按官方流程停止相关服务并指定备份时间戳。

五 快速检查清单与注意事项

  • 核对项:
    • 资源基线:CPU ≥4 核、内存≥8GBSSD 存储;必要时规划 Gitaly 集群
    • 系统参数:ulimit -n 达到 65535sysctl 关键项已生效。
    • GitLab 参数:unicorn['worker_processes']sidekiq['concurrency']cache_store 已按负载调整。
    • 网络与端口:仅开放 80/443/22(或自定义);HTTPS 证书有效;必要时使用 CDN 加速静态资源。
    • 安全:SSH 密钥登录、2FALDAP、密码复杂度策略已启用。
    • 监控与备份:Prometheus/Alertmanager 已部署;备份任务与保留策略在运行。
  • 注意事项:
    • 所有 /etc/gitlab/gitlab.rb 修改后必须执行 gitlab-ctl reconfigure
    • 调参遵循“小步迭代 + 压测验证”,避免一次性大幅变更。
    • 升级前做好全量备份与回滚预案,优先在测试环境验证。

0