doc-locale/fr-fr/administration/postgresql/tune.md
{{< details >}}
{{< /details >}}
Vous devez optimiser PostgreSQL dans les cas suivants :
Utilisez ces informations en combinaison avec les paramètres PostgreSQL requis pour GitLab.
[!note] Les versions 16.0 et ultérieures de GitLab utilisent deux ensembles de connexions de base de données pour les tables
mainetci. Cela double l'utilisation des connexions, même lorsque la même base de données PostgreSQL sert les deux ensembles de tables.
GitLab utilise des connexions de base de données provenant de plusieurs composants. Une planification appropriée des connexions évite l'épuisement des connexions de base de données et les problèmes de performances.
Chaque composant GitLab utilise des connexions de base de données en fonction de sa configuration. Sidekiq et Puma établissent un pool de connexions à PostgreSQL lors de l'initialisation. Le nombre de connexions dans le pool peut augmenter ultérieurement en cas de pics de connexions ou d'augmentations temporaires de la demande :
DB_POOL_HEADROOM.Puma connections = puma['worker_processes'] × (puma['max_threads'] + DB_POOL_HEADROOM)
Par défaut :
puma['worker_processes'] est basé sur le nombre de cœurs CPU.puma['max_threads'] est 4.DB_POOL_HEADROOM est 10.Calcul par worker : Chaque worker Puma utilise 4 threads + 10 de marge, pour un total de 14 connexions.
Calcul par défaut, en supposant 8 vCPU : 8 workers × 14 connexions par worker, pour un total de 112 connexions Puma.
Sidekiq connections = Number of Sidekiq processes × (sidekiq['concurrency'] + 1 + DB_POOL_HEADROOM)
Par défaut :
1.sidekiq['concurrency'] est 20.DB_POOL_HEADROOM est 10.Calcul par défaut : 1 processus Sidekiq × (20 de simultanéité + 1 + 10 de marge), pour un total de 31 connexions Sidekiq.
Le démon Geo Log Cursor s'exécute sur tous les nœuds GitLab Rails d'un site secondaire.
Geo log cursor connections = 1 + DB_POOL_HEADROOM
Calcul par défaut : 1 + 10 de marge, pour un total de 11 connexions Geo.
Pour les installations à nœud unique :
Total connections = 2 × (Puma + Sidekiq + Geo)
Pour les installations multi-nœuds, multipliez par le nombre de nœuds exécutant chaque composant :
Total connections = 2 × ((Puma × Rails nodes) + (Sidekiq × Sidekiq nodes) + (Geo × secondary Rails nodes))
La multiplication par 2 prend en compte les connexions de base de données doubles dans GitLab 16.0 et versions ultérieures.
Pour les installations Geo :
Geo = 0. Geo Log Cursor ne s'exécute pas sur les sites principaux.max_connections sur la même valeur sur la base de données PostgreSQL principale et sur toutes les bases de données réplicas, en utilisant l'exigence de connexion la plus élevée parmi tous les sites Geo.Cet exemple est basé sur l'architecture de référence GitLab pour 20 RPS (requêtes par seconde) ou 1 000 utilisateurs :
| Composant | Nœuds | Configuration | Connexions par composant | Total du composant, base de données double |
|---|---|---|---|---|
| Puma | 1 | 8 workers, 4 threads chacun | 14 par worker | 224 |
| Sidekiq | 1 | 1 processus, 20 de simultanéité | 31 par processus | 62 |
| Total | 286 |
Cet exemple est basé sur l'architecture de référence GitLab pour 40 RPS (requêtes par seconde) ou 2 000 utilisateurs :
| Composant | Nœuds | Configuration | Connexions par composant | Total du composant, base de données double |
|---|---|---|---|---|
| Puma | 2 | 8 workers par nœud, 4 threads chacun | 14 par worker | 448 |
| Sidekiq | 1 | 4 processus, 20 de simultanéité chacun | 31 par processus | 248 |
| Total | 696 |
Cet exemple est basé sur l'architecture de référence GitLab pour 20 RPS (requêtes par seconde) ou 1 000 utilisateurs.
| Composant par site Geo | Nœuds | Configuration | Connexions par composant | Total du composant, base de données double |
|---|---|---|---|---|
| Puma | 1 | 8 workers, 4 threads chacun | 14 par worker | 224 |
| Sidekiq | 1 | 1 processus, 20 de simultanéité | 31 par processus | 62 |
| Geo Log Cursor (sites secondaires uniquement) | 1 | 1 processus | 11 par processus | 22 |
| Total | 308 |
Cet exemple est basé sur l'architecture de référence GitLab pour 40 RPS (requêtes par seconde) ou 2 000 utilisateurs :
| Composant par site Geo | Nœuds | Configuration | Connexions par composant | Total du composant, base de données double |
|---|---|---|---|---|
| Puma | 2 | 8 workers par nœud, 4 threads chacun | 14 par worker | 448 |
| Sidekiq | 1 | 4 processus, 20 de simultanéité chacun | 31 par processus | 248 |
| Geo Log Cursor (sites secondaires uniquement) | 2 | 1 processus par nœud Rails | 11 par processus | 44 |
| Total | 740 |