Passer au contenu principal

Configuration automatique des paramètres PostgreSQL (Auto-tuning)

L'auto-tuning configure automatiquement les paramètres internes de PostgreSQL en fonction des ressources allouées : RAM, vCPU (virtual CPU), type de stockage et extensions activées. Aucune intervention manuelle n'est requise.

info

Cette configuration est appliquée lors de la création d'un cluster et automatiquement recalculée lors de la modification des ressources.

Paramètres ajustés

Mémoire

ParamètreFormule / ValeurContexte
shared_buffers25 % de la RAM, plafonné à 8 GBpostmaster (redémarrage requis)
effective_cache_size75 % de la RAMuser (immédiat)
work_mem(RAM − shared_buffers) / ((max_connections + max_worker_processes) × 6), minimum 4 MBuser (immédiat)
maintenance_work_memRAM / 16, minimum 64 MB, maximum 8 GBsighup (rechargement)
autovacuum_work_mem2 GB si maintenance_work_mem ≥ 2 GB, sinon non définisighup (rechargement)

Requêtes parallèles (vCPU ≥ 4)

Ces paramètres ne sont définis que si le cluster dispose d'au moins 4 vCPU. Les instances plus petites utilisent les valeurs par défaut de PostgreSQL.

ParamètreFormule / ValeurContexte
max_worker_processesvcpuCountpostmaster (redémarrage requis)
max_parallel_workersvcpuCountpostmaster (redémarrage requis)
max_parallel_workers_per_gathervcpuCount / 2⌉, plafonné à 4user (immédiat)
max_parallel_maintenance_workersvcpuCount / 2⌉, plafonné à 4user (immédiat)

Autovacuum

vCPUautovacuum_max_workers
< 16Non défini (valeur par défaut : 3)
16 - 314
≥ 325

Stockage

Type de stockagerandom_page_costeffective_io_concurrency
Standard (HDD)4.02
GP2 / IO1 (SSD)1.1256

WAL (Write-Ahead Logging)

Tailles du fichier WAL :

  • min_wal_size : 1 GB.
  • max_wal_size : 4 GB.

Paramètres fixes

Ces paramètres restent constants quel que soit le dimensionnement du cluster :

  • wal_compression : lz4 ;
  • jit : off ;
  • huge_pages : off.

Paramètres PostgreSQL

Les paramètres suivants sont gérés par l'opérateur interne et ne peuvent pas être configurés :

  • Réplication : primary_conninfo, synchronous_standby_names ;
  • Sauvegarde : recovery_target_*, restore_command ;
  • Archivage : archive_command, archive_mode ;
  • WAL : wal_level, max_wal_senders ;
  • Réseau : port, listen_addresses, hot_standby.

Cas particuliers

TimescaleDB

Si l'extension TimescaleDB est activée, les paramètres des processus de travail sont ajustés en conséquence :

ParamètrevCPU 4-15vCPU ≥ 16
max_worker_processes3 + vcpuCount + 83 + vcpuCount + 16
timescaledb.max_background_workers816

PostgreSQL 18+

Pour les versions PostgreSQL 18 et supérieures (≥ 4 vCPU), les paramètres I/O internes sont également ajustés :

  • io_workers : min(32, max(3, vcpuCount / 4)).

Exemples de configuration

Petit cluster (1 GiB, 1 vCPU, stockage Standard, PostgreSQL 17)

ParamètreValeur
shared_buffers256 MB
effective_cache_size768 MB
work_mem4 MB (valeur plancher)
maintenance_work_mem64 MB (valeur plancher)
random_page_cost4.0
effective_io_concurrency2

Cluster intermédiaire (8 GiB, 4 vCPU, stockage GP2, PostgreSQL 17)

ParamètreValeur
shared_buffers2 GB
effective_cache_size6 GB
work_mem4 MB
maintenance_work_mem512 MB
random_page_cost1.1
effective_io_concurrency256
max_worker_processes4
max_parallel_workers4
max_parallel_workers_per_gather2

Grand cluster avec TimescaleDB (32 GiB, 16 vCPU, stockage IO1, PostgreSQL 18, TimescaleDB)

ParamètreValeur
shared_buffers8 GB (plafond)
effective_cache_size24 GB
maintenance_work_mem2 GB
autovacuum_work_mem2 GB
max_worker_processes35 (formule TimescaleDB)
max_parallel_workers16
max_parallel_workers_per_gather4 (plafond)
autovacuum_max_workers4
timescaledb.max_background_workers16
io_workers4

Modification des ressources

Lorsque les ressources d'un cluster sont modifiées via l'API, les paramètres sont automatiquement recalculés et appliqués :

Type de changementParamètres concernésOpération requise
RAM, vCPUshared_buffers, max_worker_processes, etc.Rolling restart (redémarrage progressif)
Type de stockagerandom_page_cost, effective_io_concurrencyRechargement de configuration
Taille du volumeAucunAucune

Rolling restart

Un redémarrage progressif est déclenché automatiquement lorsque des paramètres de contexte postmaster sont modifiés. Chaque instance du cluster est redémarrée l'une après l'autre, ce qui garantit la continuité de service si vous disposez d'au moins un réplica.

avertissement

Lors d'une diminution des ressources (RAM ou vCPU), les paramètres sont ajustés à la baisse en conséquence. Assurez-vous que votre charge de travail reste compatible avec la nouvelle configuration.

Pour plus de détails sur l'impact du rolling restart, consultez la documentation sur la modification des ressources d'un cluster.