doc-locale/fr-fr/administration/reference_architectures/sizing.md
{{< details >}}
{{< /details >}}
Pour sélectionner une architecture de référence appropriée, vous devez adopter une approche systématique pour évaluer et dimensionner les environnements GitLab en fonction des architectures de référence.
Pour déterminer l'architecture de référence appropriée et les ajustements spécifiques aux composants requis, les informations suivantes vous aident à analyser :
Vous pouvez utiliser ces informations si vous disposez d'un environnement complexe pour sélectionner une architecture de référence appropriée. Vous n'aurez peut-être pas besoin de ce niveau de détail et vous pouvez évaluer la taille de votre environnement en utilisant les informations pour les environnements moins complexes.
[!note] Besoin de conseils d'experts ? Dimensionner correctement votre architecture est essentiel pour des performances optimales. Notre équipe Professional Services peut évaluer votre architecture spécifique et fournir des recommandations personnalisées pour l'optimisation des performances, de la stabilité et de la disponibilité.
Pour suivre cette documentation, vous devez avoir déployé la surveillance Prometheus avec l'instance GitLab. Prometheus fournit les métriques précises nécessaires à une évaluation correcte du dimensionnement.
Si vous n'avez pas encore configuré Prometheus :
kube-prometheus-stack pour configurer la collecte des métriques.Si vous ne pouvez pas configurer la surveillance Prometheus :
Si vous effectuez une migration depuis d'autres plateformes, les requêtes PromQL suivantes ne peuvent pas être appliquées sans les métriques GitLab existantes. Cependant, la méthodologie générale d'évaluation reste valide :
L'exécution des requêtes PromQL dépend de la solution de surveillance que vous utilisez. Comme indiqué dans la documentation sur la surveillance Prometheus, les données de surveillance sont accessibles soit en se connectant directement à Prometheus, soit en utilisant un outil de tableau de bord comme Grafana.
Les requêtes par seconde (RPS) constituent la métrique principale pour dimensionner l'infrastructure GitLab. Différents types de trafic (API, Web, opérations Git) sollicitent différents composants, chacun est donc analysé séparément pour déterminer les véritables besoins en capacité.
Exécutez ces requêtes pour comprendre votre charge maximale. Ces requêtes vous montrent :
Si les pics absolus sont de rares anomalies, un dimensionnement pour la charge soutenue peut être approprié.
Ajustez les plages de temps dans les requêtes en fonction de la rétention (remplacez [7d] par [30d] si un historique plus long est disponible).
[!note] Pour les environnements à forte activité, les requêtes
max_over_timeouquantile_over_timepeuvent expirer. Si cela se produit, supprimez la fonction d'agrégation externe et visualisez la requête interne avec un graphique. Par exemple, pour le pic de trafic API, utilisez :prometheussum(rate(gitlab_transaction_duration_seconds_count{controller=~"Grape", action!~".*/internal/.*"}[1m]))Identifiez ensuite visuellement les valeurs de pic à partir des résultats représentés graphiquement sur votre période de surveillance.
Pour identifier le RPS maximum observé sur la période de temps spécifiée :
Exécutez ces requêtes :
Pic de trafic API, pour mesurer les requêtes API de pointe provenant de l'automatisation, des outils externes et des webhooks :
max_over_time(
sum(rate(gitlab_transaction_duration_seconds_count{controller=~"Grape", action!~".*/internal/.*", action!="POST /api/jobs/request"}[1m]))[7d:1m]
)
Pic de trafic Web, pour mesurer les interactions d'interface utilisateur de pointe des utilisateurs dans les navigateurs :
max_over_time(
sum(rate(gitlab_transaction_duration_seconds_count{controller!~"Grape|HealthController|MetricsController|Repositories::GitHttpController|GraphqlController"}[1m]))[7d:1m]
)
Pic de pull et de clonage Git, pour mesurer les opérations de clonage et de récupération de dépôt de pointe :
max_over_time(
(sum(rate(gitlab_transaction_duration_seconds_count{action="git_upload_pack"}[1m])) or vector(0) +
sum(rate(gitaly_service_client_requests_total{grpc_method="SSHUploadPack"}[1m])) or vector(0))[7d:1m]
)
Pic de push Git, pour mesurer les opérations de push de code de pointe :
max_over_time(
(sum(rate(gitlab_transaction_duration_seconds_count{action="git_receive_pack"}[1m])) or vector(0) +
sum(rate(gitaly_service_client_requests_total{grpc_method="SSHReceivePack"}[1m])) or vector(0))[7d:1m]
)
Enregistrez les résultats.
Pour identifier les niveaux de charge élevée typiques en filtrant les pics rares :
Exécutez ces requêtes :
Pic soutenu API :
quantile_over_time(0.95,
sum(rate(gitlab_transaction_duration_seconds_count{controller=~"Grape", action!~".*/internal/.*", action!="POST /api/jobs/request"}[1m]))[7d:1m]
)
Pic soutenu Web :
quantile_over_time(0.95,
sum(rate(gitlab_transaction_duration_seconds_count{controller!~"Grape|HealthController|MetricsController|Repositories::GitHttpController|GraphqlController"}[1m]))[7d:1m]
)
Pic soutenu de pull et de clonage Git :
quantile_over_time(0.95,
(sum(rate(gitlab_transaction_duration_seconds_count{action="git_upload_pack"}[1m])) or vector(0) +
sum(rate(gitaly_service_client_requests_total{grpc_method="SSHUploadPack"}[1m])) or vector(0))[7d:1m]
)
Pic soutenu de push Git :
quantile_over_time(0.95,
(sum(rate(gitlab_transaction_duration_seconds_count{action="git_receive_pack"}[1m])) or vector(0) +
sum(rate(gitaly_service_client_requests_total{grpc_method="SSHReceivePack"}[1m])) or vector(0))[7d:1m]
)
Enregistrez les résultats.
Pour mapper le trafic aux architectures de référence, en utilisant les résultats que vous avez enregistrés précédemment :
Consultez les architectures de référence disponibles pour voir quelle architecture de référence chaque type de trafic suggère.
Remplissez un tableau d'analyse. Utilisez le tableau suivant comme guide :
| Type de trafic | RPS de pointe | AR suggérée pour le pic | RPS soutenu | AR suggérée pour le soutenu |
|---|---|---|---|---|
| API | ________ | _____ (jusqu'à ___ RPS) | _____________ | _____ (jusqu'à ____ RPS) |
| Web | ________ | _____ (jusqu'à ___ RPS) | _____________ | _____ (jusqu'à ____ RPS) |
| Pull et clonage Git | ________ | _____ (jusqu'à ___ RPS) | _____________ | _____ (jusqu'à ____ RPS) |
| Push Git | ________ | _____ (jusqu'à ___ RPS) | _____________ | _____ (jusqu'à ____ RPS) |
Comparez toutes les architectures de référence dans la colonne Peak Suggested RA et sélectionnez la taille la plus grande. Répétez l'opération pour la colonne Sustained Suggested RA.
Documentez la référence :
À ce stade, il existe deux tailles candidates d'architecture de référence :
Pour choisir une architecture de référence :
Directives générales :
Pour les environnements inférieurs à 40 RPS et où la haute disponibilité (HA) est une exigence, consultez la section haute disponibilité pour déterminer si le passage à l'architecture 60 RPS / 3 000 utilisateurs avec des réductions prises en charge est nécessaire.
Ayant terminé cette section, vous avez établi votre taille d'architecture de référence de base. Cela constitue la fondation, mais les sections suivantes déterminent si une charge de travail spécifique nécessite des ajustements de composants au-delà de la configuration standard.
Avant de continuer, assurez-vous d'avoir documenté les détails que vous avez recueillis dans cette section. Vous pouvez utiliser ce qui suit comme guide :
Reference architecture assessment summary:
- Selected reference architecture: _____
- Justification based on _____ RPS [absolute/sustained]
| Traffic Type | Peak RPS | Sustained RPS (95th) |
|:-------------------|:---------|:---------------------|
| API | ________ | ____________________ |
| Web | ________ | ____________________ |
| Git pull and clone | ________ | ____________________ |
| Git push | ________ | ____________________ |
Highest RPS Peak timestamp for workload analysis: _____
Le RPS total est la métrique principale de dimensionnement, mais la composition de la charge de travail a un impact significatif sur les besoins en ressources des composants. Différents types de requêtes sollicitent différents composants avec des intensités variables.
Les cibles RPS de l'architecture de référence supposent une composition de charge de travail typique basée sur des données de production :
Atypical compositions - Environnements où un type de requête dépasse significativement les proportions typiques (peuvent nécessiter des ajustements spécifiques aux composants même dans les plages RPS cibles)
Utilisez les requêtes d'extraction RPS de la section Extraire les métriques de trafic de pointe pour comprendre la composition de votre charge de travail. Comparez votre distribution aux modèles typiques :
API-heavy workloads (API > 90 % du RPS total) :
Web-heavy workloads (Web > 20 % du RPS total) :
Git-intensive workloads (Git > 15 % du RPS total ou taux de pull nettement supérieurs à la normale pour votre taille) :
[!note] Les petites variations (différence de 5 à 10 RPS dans n'importe quelle catégorie) ne nécessitent pas de modifications d'architecture. Surveillez les métriques de saturation réelles des composants (CPU, mémoire, profondeurs de file d'attente) en production plutôt que de prendre des décisions basées uniquement sur des comparaisons RPS. Les composants présentant une utilisation soutenue inférieure à 70 % disposent généralement d'une capacité suffisante, quelles que soient les variations mineures du RPS.
L'évaluation de la charge de travail identifie des modèles d'utilisation spécifiques qui nécessitent des ajustements de composants au-delà de l'architecture de référence de base. Alors que le RPS détermine la taille globale, les modèles de charge de travail déterminent la forme. Deux environnements avec un RPS identique peuvent avoir des besoins en ressources très différents.
Différentes charges de travail sollicitent différentes parties de l'architecture GitLab :
En utilisant l'horodatage de pointe de la section précédente, identifiez quels points de terminaison ont reçu le plus de trafic pendant la charge maximale.
[!note] Si vos métriques RPS montrent un trafic constamment élevé pendant les heures creuses (> 50 % du pic), cela suggère une automatisation intensive au-delà des modèles typiques. Par exemple, un trafic de pointe atteignant 100 RPS pendant les heures de bureau mais maintenant 50+ RPS pendant les nuits et les week-ends indique une charge de travail automatisée significative. Tenez-en compte lors de l'évaluation des ajustements de composants.
Exécutez cette requête avec la visualisation activée (diagramme à barres pour la distribution dans le temps, ou diagramme circulaire pour la distribution générale) :
topk(20,
sum by (controller, action) (
rate(gitlab_transaction_duration_seconds_count{controller!~"HealthController|MetricsController", action!~".*/internal/.*"}[1m])
)
)
Examinez les résultats pour la distribution des principaux points de terminaison pendant le pic RPS absolu. Les résultats peuvent présenter :
Enregistrez les résultats :
Workload pattern identified:
- [ ] Database-intensive
- [ ] Sidekiq- or Gitaly-intensive
- [ ] None detected
Les indicateurs ci-dessus fournissent des signaux initiaux de charges de travail supplémentaires. En raison de la marge intégrée dans les architectures de référence, ces charges de travail peuvent être gérées sans ajustements. Cependant, si des indicateurs forts existent et que des niveaux élevés d'automatisation sont connus, envisagez les ajustements suivants.
En fonction du modèle de charge de travail identifié précédemment, différents composants nécessitent une mise à l'échelle :
| Type de charge de travail | Quand appliquer | Composants à mettre à l'échelle |
|---|---|---|
| Intensif en base de données | <ul><li>Utilisation intensive de l'API pour le trafic non-Git (webhooks, tickets, groupes et projets)</li><li>Charges de travail d'automatisation ou d'intégration étendues connues</li></ul> | <ul><li>Augmenter les ressources Rails</li><li>Mise à l'échelle de la base de données</li></ul> |
| Intensif Sidekiq/Gitaly** | <ul><li>Opérations Git intensives, jobs CI/CD, analyse de sécurité, opérations d'importation et hooks de serveur Git</li><li>Modèles d'utilisation intensifs CI/CD connus</li></ul> | <ul><li>Augmenter les spécifications Sidekiq</li><li>Mise à l'échelle verticale de Gitaly</li><li>Mise à l'échelle de la base de données</li><li>Avancé : Configurer des classes de job spécifiques</li></ul> |
Les ajustements de ressources varient en fonction de l'intensité de la charge de travail et des métriques de saturation :
Si vous prévoyez de déployer GitLab cloud-native, les modèles de charge de travail identifiés dans cette évaluation ont des implications supplémentaires pour la configuration Kubernetes :
La stratégie de mise à l'échelle de la base de données dépend des caractéristiques de la charge de travail et peut nécessiter plusieurs approches :
Utilisez cette requête Prometheus pour identifier la distribution lecture/écriture :
# Percentage of READ operations
(
(sum(rate(gitlab_transaction_db_count_total[5m])) - sum(rate(gitlab_transaction_db_write_count_total[5m]))) /
sum(rate(gitlab_transaction_db_count_total[5m]))
) * 100
Ayant terminé cette section, vous avez identifié les modèles de charge de travail et déterminé les ajustements de composants requis.
Avant de continuer, enregistrez l'évaluation complète de la charge de travail :
Workload pattern identified:
- [ ] Database-intensive
- [ ] Sidekiq- or Gitaly-intensive
- [ ] None detected
- Component adjustments needed: _____
Dans la section suivante, vous évaluez les caractéristiques de données spéciales qui pourraient nécessiter des considérations d'infrastructure supplémentaires.
Les caractéristiques des dépôts et les modèles d'utilisation du réseau peuvent avoir un impact significatif sur les performances de GitLab au-delà de ce que les métriques RPS révèlent.
Les grands monodépôts, les fichiers binaires étendus et les opérations intensives en réseau nécessitent des ajustements d'infrastructure que le dimensionnement standard ne prend pas en compte.
Les grands monodépôts (plusieurs gigaoctets ou plus) changent fondamentalement la façon dont les opérations Git s'exécutent. Un seul clonage d'un dépôt de 10 Go consomme plus de ressources que des centaines de clonages de dépôts typiques.
Ces dépôts affectent non seulement Gitaly, mais aussi Rails, Sidekiq et la base de données selon la charge de travail.
Le processus de profilage se concentre sur l'identification des dépôts qui dépassent significativement les tailles typiques :
Pour identifier la taille d'un dépôt :
Accédez aux quotas d'utilisation d'un projet.
Examinez le type de stockage Dépôt.
Calculez le nombre de projets avec des dépôts de plus de 2 Go et de plus de 10 Go.
Enregistrez les résultats :
Number of medium monorepos (2GB - 10GB): _____
Number of large monorepos (>10GB): _____
Les grands dépôts nécessitent à la fois une mise à l'échelle verticale et des ajustements opérationnels. Ces dépôts affectent les performances sur l'ensemble de la pile, des opérations Git et de l'utilisation du CPU à la consommation de mémoire et à la bande passante réseau.
| Scénario | Ajustements de composants |
|---|---|
| Plusieurs monodépôts moyens | <ul><li>Gitaly : Spécifications 1,5x à 2x</li><li>Rails : Spécifications 1,25x à 1,5x</li></ul> |
| Grands monodépôts | <ul><li>Gitaly : Spécifications 2x à 4x</li><li>Rails : Spécifications 1,5x à 2x</li><li>Envisagez de fragmenter le monodépôt vers un nœud Gitaly dédié</li></ul> |
Des stratégies d'optimisation supplémentaires pour les environnements de monodépôt sont documentées dans Améliorer les performances des monodépôts, notamment Git LFS pour les fichiers binaires et le clonage superficiel.
La saturation du réseau cause des problèmes uniques qui sont souvent difficiles à diagnostiquer. Contrairement aux goulots d'étranglement CPU ou mémoire qui affectent des opérations spécifiques, la saturation du réseau peut provoquer des délais d'expiration apparemment aléatoires dans toutes les fonctions GitLab.
Sources courantes de charge réseau :
Calculez la consommation réseau de pointe et de base pour identifier les goulots d'étranglement potentiels. Évaluez les deux pour distinguer les pics occasionnels (gérés par la capacité en rafale) du trafic soutenu élevé (nécessitant des machines virtuelles améliorées pour le réseau).
Exécutez les requêtes suivantes :
# Outbound traffic (Gbps) - top 10 nodes
topk(10, sum by (instance) (rate(node_network_transmit_bytes_total{device!="lo"}[5m]) * 8 / 1000000000))
# Inbound traffic (Gbps) - top 10 nodes
topk(10, sum by (instance) (rate(node_network_receive_bytes_total{device!="lo"}[5m]) * 8 / 1000000000))
Enregistrez les pics de pointe et la base de référence typique observés sur votre période de surveillance :
Peak outbound traffic: _____ Gbps (baseline: _____ Gbps)
Peak inbound traffic: _____ Gbps (baseline: _____ Gbps)
Les seuils ci-dessous sont des directives approximatives uniquement. Les garanties de bande passante réseau réelles varient considérablement selon le fournisseur de cloud et le type de machine virtuelle. Vérifiez toujours les spécifications réseau (limites de base et en rafale) pour vos types d'instances spécifiques afin de vous assurer qu'elles s'alignent avec vos modèles de charge de travail.
En fonction des mesures de trafic sortant et entrant :
| Charge réseau | Seuil | Pourquoi ce seuil | Action requise |
|---|---|---|---|
| Standard | < 1 Gbps | Dans la bande passante de base de la plupart des instances standard | Instances standard suffisantes |
| Modéré | 1-3 Gbps | Peut dépasser la base AWS mais dans les instances standard GCP/Azure | <ul><li>AWS : Surveiller la limitation, peut nécessiter une amélioration réseau</li><li>GCP/Azure : Instances standard généralement suffisantes</li></ul> |
| Élevé | 3-10 Gbps | Dépasse la base AWS. Approche les limites de certaines instances standard | <ul><li>AWS : Machines virtuelles améliorées pour le réseau requises</li><li>GCP/Azure : Vérifier les spécifications de bande passante de l'instance</li></ul> |
| Très élevé | > 10 Gbps | Dépasse les capacités de la plupart des instances standard | <ul><li>Machines virtuelles améliorées pour le réseau requises chez tous les fournisseurs</li><li>Pour les grands artefacts, désactivez le téléchargement via proxy d'objet</li></ul> |
Avant de continuer, enregistrez l'évaluation complète du profilage des données :
Data Profile Summary:
- Medium monorepos (2GB-10GB): _____
- Large monorepos (>10GB): _____
- Gitaly adjustments needed: _____
- Rails adjustments needed: _____
- Peak outbound traffic: _____ Gbps (sustained baseline: _____ Gbps)
- Peak inbound traffic: _____ Gbps (sustained baseline: _____ Gbps)
- Network infrastructure changes: _____
Comprendre l'environnement existant fournit un contexte crucial pour les recommandations :
Collectez des données d'environnement complètes pour établir l'état actuel :
Comparez l'environnement actuel aux architectures de référence disponibles. Tenez compte de ce qui suit :
Enregistrez vos résultats :
Nearest Reference Architecture: _____
Custom configurations or deviations:
- _____
- _____
Comparez l'environnement actuel à l'architecture de référence recommandée que vous avez développée à partir des sections précédentes. Si l'environnement actuel :
L'environnement actuel pourrait être sur-provisionné ou avoir des raisons valides pour des ressources supplémentaires qui doivent être analysées. Vérifiez l'utilisation des ressources CPU/mémoire sur Rails, Gitaly, la base de données et Sidekiq.
Une faible utilisation (< 40 %) suggère un sur-provisionnement. Une utilisation élevée peut indiquer des exigences de charge de travail spécifiques non capturées dans l'analyse RPS.
Vérifiez si les recommandations doivent être ajustées pour des exigences non découvertes.
Si l'environnement actuel présente des problèmes de performances :
Ayant terminé cette section, vous avez analysé l'environnement actuel et comparé avec les recommandations.
Avant de continuer, enregistrez la comparaison complète de l'environnement :
Current Environment Analysis:
- Current RA (nearest): _____
- Recommended RA (from RPS and workload analysis): _____
- Resource comparison: [ ] Current < Recommended [ ] Current ≈ Recommended [ ] Current > Recommended
- Performance status: [ ] No issues [ ] Has issues
- Adjustments needed: _____
- Notes: _____
Dans la section suivante, vous évaluez les projections de croissance pour vous assurer que le dimensionnement reste approprié dans le temps.
Les modifications d'infrastructure nécessitent un délai important pour l'approvisionnement, la migration et les tests. L'estimation de la croissance garantit que l'architecture recommandée reste viable tout au long de la période de mise en œuvre et au-delà.
Les tendances historiques combinées aux plans d'affaires fournissent les projections de croissance les plus précises.
Les modèles de croissance passés peuvent aider à prédire la trajectoire future mieux que les projections d'affaires :
Changements d'affaires attendus qui ont un impact sur les besoins en infrastructure :
Évaluez si l'un de ces facteurs (ou d'autres changements organisationnels) pourrait affecter la charge sur l'environnement et nécessiter des ajustements d'infrastructure. Documentez les changements pertinents et leur calendrier prévu.
En fonction des tendances historiques et des projections d'affaires, sélectionnez la stratégie d'adaptation à la croissance appropriée :
Ayant terminé cette section, les projections de croissance sont intégrées dans la décision de dimensionnement.
Enregistrez l'analyse complète de la croissance :
Growth Assessment Summary:
- Historical RPS comparison: _____
- Business growth factors: _____
- Growth category: [ ] Stable/Minimal [ ] Moderate [ ] Significant
- Strategy: [ ] Current RA sufficient [ ] Size for projected growth
Dans la section suivante, vous compilez tous les résultats en recommandations finales d'architecture.
Compilez les résultats de toutes les sections précédentes pour déterminer l'architecture de référence optimale et les ajustements requis.
Rassemblez les résultats clés de chaque section pour former la décision de dimensionnement :
Sur la base de l'évaluation complète, enregistrez la recommandation d'architecture complète :
Final Architecture Recommendation
==================================
- Selected RA: [Size] based on [Absolute/Sustained] Peak RPS of [value]
- Component adjustments required:
- [ ] No adjustments needed - standard RA configuration sufficient
- [ ] Adjustments required:
- Rails: _____
- Sidekiq: _____
- Database: _____
- Gitaly: _____
- Network considerations: □ Standard instances □ Network-optimized instances
- Selected RA is aligned with existing environment: [Yes/No/Not applicable]
- Growth accommodation: [Current RA sufficient / Sized up for growth]
Assessment Summary:
├── RPS Analysis
│ ├── Absolute Peak RPS: _____ → Baseline RA: _____
│ └── Sustained Peak RPS: _____ → Sustained RA: _____
├── Workload Type
│ └── Type: [ ] Database-Intensive [ ] Sidekiq-Intensive [ ] None
├── Data Profile
│ ├── Large repos (>2GB): _____ | Monorepos (>10GB): _____
│ └── Network: Peak _____ Gbps | Baseline _____ Gbps
├── Current State
│ ├── Nearest RA: _____
| └── Discrepancies and customizations: _____
└── Growth
├── Growth projection: _____
└── Growth buffer strategy: _____
Ayant complété toutes les sections, l'évaluation du dimensionnement est terminée. La recommandation finale comprend :
La surveillance régulière reste essentielle pour valider les hypothèses et ajuster l'infrastructure à mesure que les modèles de charge de travail évoluent.