Serveur PostgreSQL sur mesure pour la productionCustom PostgreSQL server for production workloads

PostgreSQL tire un excellent parti d'un matériel bien choisi, mais il punit sans pitie un stockage lent sur le journal des écritures anticipees. Chaque validation de transaction attend le WAL. La mémoire, elle, sert à la fois de cache PostgreSQL et de cache du système de fichiers. S2I dimensionne, assemble et teste ces serveurs avant mise en production.PostgreSQL makes excellent use of well-chosen hardware, but it mercilessly punishes slow storage on the write-ahead log. Every transaction commit waits on the WAL. Memory, meanwhile, serves both as PostgreSQL cache and as filesystem cache. S2I sizes, assembles and tests these servers before they enter production.

Le WAL dicte la latence de validationThe WAL dictates commit latency

Chaque transaction validée doit voir son enregistrement WAL écrit et confirme sur disque. Un stockage lent a cet endroit plafonne le nombre de transactions par seconde, quelle que soit la puissance du processeur. Un SSD NVMe avec protection contre les coupures de courant est donc indispensable, et le placer sur un volume distinct des données évite la contention. Sur les charges intensives, cette seule décision architecturale change souvent le comportement de toute l'application.Every committed transaction must have its WAL record written and confirmed on disk. Slow storage at that point caps the number of transactions per second, regardless of CPU horsepower. An NVMe SSD with power-loss protection is therefore mandatory, and placing it on a volume separate from the data avoids contention. On heavy workloads, this single architectural decision often changes the behaviour of the whole application.

  • SSD NVMe dédié au WAL, protection contre coupure obligatoire
  • Volume WAL sépare des fichiers de données
  • Endurance DWPD calculée sur le volume de transactions
  • Cache disque en écriture differee jamais active sans protection
  • NVMe SSD dedicated to the WAL, power-loss protection mandatory
  • WAL volume kept separate from the data files
  • DWPD endurance calculated from the real transaction volume
  • Write-back disk cache never enabled without power protection

Mémoire, cache et pages volumineusesMemory, caching and huge pages

PostgreSQL s'appuie sur deux niveaux de cache : ses propres tampons partages, et le cache de pages du système d'exploitation. Il faut donc laisser de la place aux deux plutôt que d'attribuer toute la mémoire a l'instance. Activer les pages volumineuses réduit la charge de gestion mémoire sur les grosses instances. Attention aussi au nombre de connexions : chaque connexion consomme de la mémoire, ce qui rend un gestionnaire de pool indispensable au-dela de quelques centaines de clients.PostgreSQL relies on two levels of cache: its own shared buffers, and the operating system page cache. You therefore need to leave room for both rather than assigning all memory to the instance. Enabling huge pages reduces memory management overhead on large instances. Also watch the connection count: every connection consumes memory, which makes a pooler indispensable beyond a few hundred clients.

  • Tampons partages et cache système dimensionnés ensemble
  • Pages volumineuses activees sur les grosses instances
  • Gestionnaire de pool de connexions au-dela de quelques centaines de clients
  • Mémoire de travail par requete calibrée selon le parallélisme
  • Shared buffers and OS page cache sized together, not in isolation
  • Huge pages enabled on large instances
  • Connection pooler used beyond a few hundred concurrent clients
  • Per-query working memory calibrated against the parallelism level

Réplication, sauvegarde et basculeReplication, backup and failover

La réplication en flux vers un secondaire couvre à la fois la haute disponibilité et la répartition des lectures. Le secondaire doit disposer d'un matériel comparable, sans quoi il ne tiendra pas la charge après bascule. Cote sauvegarde, l'archivage continu du WAL permet une restauration a un instant précis, ce qui vaut bien mieux qu'un export nocturne isole. S2I assemble les deux machines, les teste en charge, garantit le matériel et fournit les pièces détachées.Streaming replication to a standby covers both high availability and read scaling. The standby needs comparable hardware, otherwise it will not hold the load after a failover. On backup, continuous WAL archiving enables point-in-time recovery, which is worth far more than an isolated nightly dump. S2I assembles both machines, load-tests them, warrants the hardware and supplies spare parts.

  • Secondaire au matériel comparable au primaire
  • Archivage continu du WAL pour restauration a un instant précis
  • Bascule testée réellement, procédure documentée
  • Sauvegarde exportee hors du serveur et idéalement immuable
  • Standby built on hardware comparable to the primary
  • Continuous WAL archiving for point-in-time recovery
  • Failover genuinely tested, with a documented procedure
  • Backups exported off the server and ideally made immutable

Repères de configurationConfiguration guidance

ProcesseurCPUAMD EPYC 9004/9005 ou Intel Xeon — fréquence et cache par cœur
MémoireMemoryDDR5 RDIMM ECC, toutes voies peuplees, capacité généreuse
DonnéesData filesSSD NVMe U.2 mixed-use, latence faible et constante
WALWALVolume NVMe dédié avec protection contre coupure de courant
RéplicationReplicationSecondaire en flux sur matériel comparable
RéseauNetwork2x 10/25 GbE, lien dédié pour la réplication
AlimentationPowerPSU redondants hot-swap, onduleur pilote

Repères indicatifs : la configuration finale est validée avec vous selon vos contraintes réelles (charge, budget, environnement).Indicative guidance: the final configuration is validated with you against your real constraints (workload, budget, environment).

Questions fréquentesFrequently asked questions

Oui pour les charges très concurrentes, ou chaque connexion est traitée par un processus distinct, et pour les requêtes parallelisables. Non pour une requete unique et complexe, qui reste limitée par la fréquence. Le bon équilibre dépend donc du nombre de clients simultanes autant que de la nature des requêtes executees.Yes for highly concurrent workloads, where each connection is served by its own process, and for parallelisable queries. No for a single complex query, which remains bound by clock speed. The right balance therefore depends on concurrent client count as much as on the nature of the queries executed.
Des que la charge d'écriture devient significative, oui. Le WAL est écrit sequentiellement et de manière synchrone, alors que les fichiers de données subissent des accès aléatoires. Les séparer évite que l'un ne penalise l'autre, et permet de choisir un media à très faible latence uniquement la ou cela compte vraiment.As soon as the write workload becomes significant, yes. The WAL is written sequentially and synchronously, whereas data files see random access. Separating them stops one from penalising the other, and lets you pick very low-latency media only where it genuinely makes a difference.
Idéalement assez pour que le jeu de données fréquemment consulte tienne en cache, entre les tampons partages et le cache du système. Au-dela, le gain diminue. Il faut aussi réserver de la mémoire pour les tris et les connexions, dont la consommation cumulée surprend souvent lors des pics d'activité.Ideally enough for the frequently accessed data set to stay cached, between shared buffers and the OS page cache. Beyond that, returns diminish. You must also reserve memory for sorts and connections, whose cumulative consumption frequently surprises people during activity peaks.

Un besoin précis à chiffrer ?A specific need to quote?

Décrivez votre contexte : nous revenons sous 24 à 72 heures avec une approche et un devis.Tell us your context: we come back within 24-72 hours with an approach and a quote.