Help us learn about your current experience with the documentation. Take the survey.

参考架构:支持高达 20 RPS 或 1,000 名用户

  • 版本:免费版、专业版、旗舰版
  • 产品:GitLab 自我管理版

本参考架构旨在支持每秒 20 次请求(RPS)的峰值负载。根据实际数据,此负载通常对应于最多 1,000 名用户,包括手动操作和自动化交互。

如需完整的参考架构列表,请参阅可用的参考架构

  • 目标负载:API:20 RPS,Web:2 RPS,Git (拉取):2 RPS,Git (推送):1 RPS
  • 高可用性:否。如需高可用性环境,请遵循经过修改的 3K 参考架构
  • 云原生混合:否。对于云原生混合环境,您可以遵循经过修改的混合参考架构
  • 不确定使用哪种参考架构? 如需更多信息,请参阅决定从哪种架构开始
用户数 配置 GCP 示例1 AWS 示例1 Azure 示例1
高达 1,000 名用户或 20 RPS 8 vCPU, 16 GB 内存 n1-standard-82 c5.2xlarge F8s v2

脚注

  1. 此处提供的机器类型示例仅用于说明目的。这些类型已在验证和测试中使用,但并非旨在作为硬性规定。支持切换到满足所列要求的其他机器类型,包括可用的 ARM 变体。更多信息请参阅支持的机器类型
  2. 对于 GCP,我们选择了与推荐配置(8 vCPU 和 16 GB RAM)最接近且等效的标准机器类型。如果需要,也可以使用自定义机器类型

下图显示,虽然 GitLab 可以安装在单个服务器上,但其内部由多个服务组成。当实例进行扩展时,这些服务会根据其特定需求被分离并独立扩展。

在某些情况下,您可以将某些服务利用 PaaS (平台即服务) 来实现。例如,您可以将云对象存储用于某些文件系统。为了实现冗余,某些服务会变成节点集群并存储相同的数据。

在水平扩展的 GitLab 配置中,需要各种辅助服务来协调集群或发现资源。例如,用于 PostgreSQL 连接管理的 PgBouncer,或用于 Prometheus 端点发现的 Consul。

@startuml 1k
card "**Prometheus**" as monitor #7FFFD4
package "GitLab 单服务器" as gitlab-single-server {
together {
  card "**GitLab Rails**" as gitlab #32CD32
  card "**Gitaly**" as gitaly #FF8C00
  card "**PostgreSQL**" as postgres #4EA7FF
  card "**Redis**" as redis #FF6347
  card "**Sidekiq**" as sidekiq #ff8dd1
}
card "本地存储" as local_storage #white
}

gitlab -[#32CD32]--> gitaly
gitlab -[#32CD32]--> postgres
gitlab -[#32CD32]--> redis
gitlab -[#32CD32]--> sidekiq
gitaly -[#32CD32]--> local_storage
postgres -[#32CD32]--> local_storage
sidekiq -[#32CD32]--> local_storage
gitlab -[#32CD32]--> local_storage

monitor .[#7FFFD4]u-> gitlab
monitor .[#7FFFD4]u-> sidekiq
monitor .[#7FFFD4]-> postgres
monitor .[#7FFFD4]-> gitaly
monitor .[#7FFFD4,norank]--> redis

@enduml

要求

在继续之前,请查看参考架构的要求

节点的规格基于运行状况良好的使用模式和仓库大小的高百分位数但是,如果您有大型单体仓库(大于数 GB)或额外的工作负载,它们可能会显著影响环境的性能。 如果这适用于您的情况,则可能需要进一步调整。请参阅链接的文档,如果需要进一步指导,请联系我们。

测试方法

20 RPS / 1k 用户参考架构旨在满足大多数常见工作流程。GitLab 会定期针对以下端点吞吐量目标进行冒烟测试和性能测试:

端点类型 目标吞吐量
API 20 RPS
Web 2 RPS
Git (拉取) 2 RPS
Git (推送) 1 RPS

这些目标基于实际客户数据,反映了指定用户数下的总环境负载,包括 CI 流水线和其他工作负载。

有关我们测试方法的更多信息,请参阅验证和测试结果部分。

性能注意事项

如果您的环境存在以下情况,您可能需要进行额外调整:

在这些情况下,请参阅扩展环境以获取更多信息。如果您认为这些注意事项可能适用于您,请根据需要联系我们以获取额外指导。

设置说明

要为此默认参考架构安装 GitLab,请使用标准的安装说明

您还可以选择性地将 GitLab 配置为使用外部 PostgreSQL 服务外部对象存储服务。这可以提高性能和可靠性,但会增加复杂性。

配置高级搜索

  • 版本:专业版、旗舰版
  • 产品:GitLab 自我管理版

您可以利用 Elasticsearch 并启用高级搜索,以便在整个 GitLab 实例中进行更快、更高级的代码搜索。

Elasticsearch 集群的设计和要求取决于您的数据。有关如何与您的实例一同设置 Elasticsearch 集群的建议最佳实践,请参阅选择最佳集群配置

使用 Helm Charts 的云原生混合参考架构

在云原生混合参考架构的设置中,选定的无状态组件会使用我们官方的 Helm Charts 部署在 Kubernetes 中。有状态组件则通过 Linux 软件包部署在计算虚拟机中。

可在 Kubernetes 中使用的最小参考架构是 2k 或 40 RPS GitLab 云原生混合(非高可用)和 3k 或 60 RPS GitLab 云原生混合(高可用)。

对于服务用户数较少或 RPS 较低的环境,您可以降低节点规格。您可以根据用户数量,按需降低所有建议的节点规格。但是,不应低于通用要求

后续步骤

现在,您拥有一个全新的 GitLab 环境,其核心功能已相应配置完毕。根据您的需求,您可能需要配置其他可选的 GitLab 功能。更多信息请参阅安装 GitLab 后的步骤

根据您的环境和需求,设置其他功能可能需要额外的硬件要求或调整。更多信息请参阅各个功能页面。