温馨提示×

gitlab在ubuntu上如何进行性能优化

小樊
38
2025-12-22 17:14:37
栏目: 智能运维

Ubuntu 上 GitLab 性能优化实操指南

一 硬件与系统基础

  • 使用SSD/NVMe作为数据盘,I/O 是 Git 仓库读写与 CI 流水线的关键瓶颈;CPU 与内存建议至少4 核 + 8GB,更稳妥为8 核 + 16GB以上。
  • 保持系统与 GitLab 版本及时更新,获取性能修复与改进。
  • 启用监控与告警(如 Prometheus + Grafana),关注P95/P99 响应时间、数据库查询耗时、Sidekiq 队列积压等关键指标。
  • 对外静态资源启用CDN 加速,降低页面与附件访问延迟。
  • 规划备份与恢复演练,确保备份可用、恢复流程熟练。

二 资源受限环境的精简配置(测试/小型实例)

  • 备份原始配置并编辑:sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.bak && sudo vim /etc/gitlab/gitlab.rb
  • 精简组件(仅限测试/个人环境):
    monitoring_role[‘enable’] = false
    prometheus[‘enable’] = false
    alertmanager[‘enable’] = false
    postgres_exporter[‘enable’] = false
    redis_exporter[‘enable’] = false
    node_exporter[‘enable’] = false
  • 降低 Rails/Puma 与 Sidekiq 资源占用:
    puma[‘worker_processes’] = 1
    puma[‘min_threads’] = 1
    puma[‘max_threads’] = 2
    sidekiq[‘concurrency’] = 4
  • 降低数据库内存占用:
    postgresql[‘shared_buffers’] = “128MB”
    postgresql[‘work_mem’] = “4MB”
  • 应用配置并重启:sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart
  • 说明:puma、sidekiq、gitaly、redis、postgresql、nginx 为核心组件,不要随意关闭;生产环境不建议禁用 Puma 的 cluster 模式。

三 中大型实例的并发与数据库调优(8 核 16GB 示例)

  • 提升 Puma 并发能力(示例值,按实际压测微调):
    puma[‘worker_processes’] = 4
    puma[‘min_threads’] = 2
    puma[‘max_threads’] = 4
  • 提升数据库连接池(Rails 与 PgBouncer 场景按需):
    gitlab_rails[‘db_pool’] = 200
  • PostgreSQL 关键参数(示例值,结合内存与负载调优):
    postgresql[‘shared_buffers’] = “1GB”
    postgresql[‘work_mem’] = “16MB”
    postgresql[‘maintenance_work_mem’] = “128MB”
  • 应用配置并重启:sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart
  • 建议基于实际负载做压测与 A/B 调参,避免一次性拉满资源。

四 存储与数据布局优化

  • 使用对象存储(如 S3/MinIO)承载LFS、上传附件、制品、备份等非核心数据,减轻本地磁盘压力并便于横向扩展。
  • 迁移仓库数据目录(示例将默认 /var/opt/gitlab/git-data 迁至 /data/gitlab/git-data):
    1. 停服务:sudo gitlab-ctl stop
    2. 迁移数据:rsync -av /var/opt/gitlab/git-data/ /data/gitlab/git-data/
    3. 修改配置:在 /etc/gitlab/gitlab.rb 中设置
      git_data_dirs({ “default” => { “path” => “/data/gitlab/git-data” } })
    4. 使配置生效:sudo gitlab-ctl reconfigure && sudo gitlab-ctl start
  • 预防仓库操作临时文件占满磁盘:监控 /var/opt/gitlab/git-data 下异常增长的tmp_pack_* 文件,必要时在安全窗口清理并排查仓库异常操作或大对象导入。

五 运维与日常优化

  • 启用 HTTPS/LetsEncrypt
    letsencrypt[‘enable’] = true
    letsencrypt[‘contact_emails’] = [‘admin@example.com’]
    letsencrypt[‘auto_renew’] = true
    letsencrypt[‘auto_renew_hour’] = “1”
    letsencrypt[‘auto_renew_minute’] = “30”
    letsencrypt[‘auto_renew_day_of_month’] = “*/5”
    external_url ‘https://gitlab.example.com’
  • 大文件管理:启用 Git LFS,避免将大文件直接提交到仓库;定期清理无用分支与制品,减少仓库膨胀与克隆耗时。
  • 定期维护:执行仓库GC/清理任务,优化对象存储与本地缓存;对流水线产物与日志设置生命周期与保留策略
  • 高可用与扩展:按需部署多实例 + 负载均衡(HAProxy/Nginx),对 Gitaly 采用集群模式提升稳定性与吞吐。

0