# Reference architecture: up to 25,000 users

> 原文：[https://docs.gitlab.com/ee/administration/reference_architectures/25k_users.html](https://docs.gitlab.com/ee/administration/reference_architectures/25k_users.html)

*   [Footnotes](#footnotes)

# Reference architecture: up to 25,000 users[](#reference-architecture-up-to-25000-users "Permalink")

本页描述了最多 25,000 个用户的 GitLab 参考架构. 有关参考架构的完整列表，请参见[可用参考架构](index.html#available-reference-architectures) .

> *   **支持的用户（大约）：** 25,000
> *   **高可用性：** True
> *   **测试 RPS 速率：** API：500 RPS，网站：50 RPS，Git：50 RPS

| Service | Nodes | 配置（ [8](#footnotes) ） | GCP | AWS | Azure |
| --- | --- | --- | --- | --- | --- |
| 亚搏体育应用程序轨道（ [1](#footnotes) ） | 5 | 32 个 vCPU，28.8GB 内存 | `n1-highcpu-32` | `c5.9xlarge` | F32s v2 |
| PostgreSQL | 3 | 8 个 vCPU，30GB 内存 | `n1-standard-8` | `m5.2xlarge` | D8s v3 |
| PgBouncer | 3 | 2 个 vCPU，1.8GB 内存 | `n1-highcpu-2` | `c5.large` | F2s v2 |
| 吉塔利（ [2](#footnotes) ）（ [5](#footnotes) ）（ [7](#footnotes) ） | X | 32 个 vCPU，120GB 内存 | `n1-standard-32` | `m5.8xlarge` | D32s v3 |
| Redis（ [3](#footnotes) ）-缓存 | 3 | 4 个 vCPU，15GB 内存 | `n1-standard-4` | `m5.xlarge` | D4s v3 |
| Redis（ [3](#footnotes) ）-队列/共享状态 | 3 | 4 个 vCPU，15GB 内存 | `n1-standard-4` | `m5.xlarge` | D4s v3 |
| Redis 前哨（ [3](#footnotes) ）-缓存 | 3 | 1 个 vCPU，1.7GB 内存 | `g1-small` | `t2.small` | B1MS |
| Redis 前哨（ [3](#footnotes) ）-队列/共享状态 | 3 | 1 个 vCPU，1.7GB 内存 | `g1-small` | `t2.small` | B1MS |
| Consul | 3 | 2 个 vCPU，1.8GB 内存 | `n1-highcpu-2` | `c5.large` | F2s v2 |
| Sidekiq | 4 | 4 个 vCPU，15GB 内存 | `n1-standard-4` | `m5.xlarge` | D4s v3 |
| 对象存储（ [4](#footnotes) ） | - | - | - | - | - |
| NFS 服务器（ [5](#footnotes) ）（ [7](#footnotes) ） | 1 | 4 个 vCPU，3.6GB 内存 | `n1-highcpu-4` | `c5.xlarge` | F4s v2 |
| 监控节点 | 1 | 4 个 vCPU，3.6GB 内存 | `n1-highcpu-4` | `c5.xlarge` | F4s v2 |
| 外部负载平衡节点（ [6](#footnotes) ） | 1 | 4 个 vCPU，3.6GB 内存 | `n1-highcpu-4` | `c5.xlarge` | F4s v2 |
| 内部负载平衡节点（ [6](#footnotes) ） | 1 | 4 个 vCPU，3.6GB 内存 | `n1-highcpu-4` | `c5.xlarge` | F4s v2 |

## Footnotes[](#footnotes "Permalink")

1.  在我们的体系结构中，我们使用 Puma Web 服务器运行每个 GitLab Rails 节点，并将其工作程序数量设置为 90％的可用 CPU 以及四个线程. 对于运行带有其他组件的 Rails 的节点，应该相应地降低 worker 的值，我们发现 50％达到了很好的平衡，但这取决于工作量.

2.  Gitaly node requirements are dependent on customer data, specifically the number of projects and their sizes. We recommend two nodes as an absolute minimum for HA environments and at least four nodes should be used when supporting 50,000 or more users. We also recommend that each Gitaly node should store no more than 5TB of data and have the number of [`gitaly-ruby` workers](../gitaly/index.html#gitaly-ruby) set to 20% of available CPUs. Additional nodes should be considered in conjunction with a review of expected data size and spread based on the recommendations above.

3.  推荐的 Redis 设置因架构的大小而异. 对于较小的体系结构（少于 3000 个用户），一个实例就足够了. 对于中型安装（3,000-5,000），我们建议为所有课程使用一个 Redis 集群，并且 Redis Sentinel 与 Consul 一起托管. 对于较大的体系结构（10,000 个或更多用户），我们建议分别为 Cache 类和队列和 Shared State 类运行一个单独的[Redis 群集](../redis/replication_and_failover.html#running-multiple-redis-clusters) . 我们还建议您为每个 Redis 群集分别运行 Redis Sentinel 群集.

4.  对于 LFS，Uploads，Artifacts 等数据对象.由于性能和可用性更好，我们建议尽可能在 NFS 上使用[对象存储服务](../object_storage.html) .

5.  NFS 可以用作存储库数据（替代 Gitaly）和对象存储的替代方法，但是出于性能原因，通常不建议使用 NFS. 请注意，但是[GitLab Pages](https://gitlab.com/gitlab-org/gitlab-pages/-/issues/196)是必需的.

6.  我们的架构已通过[HAProxy](https://www.haproxy.org/)作为负载均衡器进行了测试和验证. 尽管也可以使用具有类似功能集的其他负载均衡器，但这些负载均衡器尚未经过验证.

7.  我们强烈建议为任何 Gitaly 或 NFS 节点设置 HDD 之上的 SSD 磁盘，其读操作的吞吐量至少为 8000 IOPS，写操作的吞吐量至少为 2,000 IOPS，因为这些组件的 I / O 繁重. 这些 IOPS 值仅建议作为启动器使用，因为随着时间的推移，它们可能会根据环境工作负载的规模而调整得更高或更低. 如果您正在 Cloud provider 上运行环境，则可能需要参考其文档以了解如何正确配置 IOPS.

8.  这些架构是使用 GCP 上的[Intel Xeon E5 v3（Haswell）](https://cloud.google.com/compute/docs/cpu-platforms) CPU 平台构建和测试的. 在不同的硬件上，您可能会发现需要对 CPU 或节点数进行相应的调整，无论是较低还是较高. 有关更多信息，请在[此处](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Reference-Architectures/GCP-CPU-Benchmarks)找到 CPU 的[Sysbench](https://github.com/akopytov/sysbench)基准.