vCPU dédié sur des processeurs serveur de 2022 ou plus récents · NVMe · sans KYC. Payez en crypto : BTC, USDT, USDC, ETH, SOL, LTC, XMR
Langue: Français
Choisissez vos cœurs

Guide · PostgreSQL · latence p99

De combien de CPU et de RAM PostgreSQL a-t-il besoin sur un VPS à vCPU dédiés ?

De combien de CPU et de RAM PostgreSQL a-t-il besoin sur un VPS ? Comment PostgreSQL transforme les connexions en charge CPU, ce que la documentation de PostgreSQL 18 dit sur la mémoire, quel plan convient à quelle base de données, et pourquoi le steal CPU apparaît d'abord dans les requêtes les plus lentes.

Dernière mise à jour: · 8 min de lecture

Réponse rapide

De combien de CPU et de RAM PostgreSQL a-t-il besoin sur un VPS ?

PostgreSQL a besoin d'environ un vCPU par requête exécutée au même moment, et de suffisamment de RAM pour garder son working set en cache. Sur Cobaltfell, Fell 2 (4 GB) convient à une petite application en production, et Fell 8 (16 GB) à une base de données qui exécute des rapports à côté du trafic en direct. La documentation de PostgreSQL 18, consultée le 2 novembre 2026, donne 25 % de la RAM comme valeur de départ pour shared_buffers.

Combien de vCPU PostgreSQL utilise-t-il ?

PostgreSQL utilise un thread CPU par requête en cours, car chaque connexion dispose de son propre processus backend. La documentation parle d'un modèle « process per user » : le postmaster lance un nouveau backend pour chaque connexion. Le CPU dont une base de données a besoin est donc déterminé par le nombre de requêtes exécutées au même instant, pas par le nombre de connexions ouvertes. Une connexion inactive coûte de la mémoire et pas de CPU.

Trois éléments ajoutent des threads à vos requêtes :

  • Requête parallèle. Un balayage volumineux recrute des assistants : max_parallel_workers_per_gather vaut 2 par défaut et max_parallel_workers vaut 8, tirés de max_worker_processes (8 par défaut).
  • Autovacuum. Jusqu'à autovacuum_max_workers processus (3 par défaut) nettoient les tables en arrière-plan.
  • L'application, lorsqu'elle tourne sur le même VPS.

Sur un VPS à 2 vCPU, un rapport qui passe en parallèle peut occuper tous les threads pendant que les requêtes courtes de l'application attendent derrière. Baisser max_parallel_workers_per_gather pour le rôle de reporting, ou monter d'un plan, résout le problème. La règle thread-contre-cœur qui sous-tend ces chiffres est expliquée dans un vCPU dédié est-il un cœur ou un thread.

De combien de RAM PostgreSQL a-t-il besoin sur un VPS ?

Commencez shared_buffers à 25 % de la RAM du VPS et laissez l'essentiel du reste au page cache du système d'exploitation. La documentation de PostgreSQL 18 donne cette valeur de départ pour un serveur de base de données dédié avec 1 GB de RAM ou plus, et précise que plus de 40 % a peu de chances de mieux fonctionner, car PostgreSQL s'appuie aussi sur le cache du noyau. La valeur par défaut livrée est de 128 MB.

Deux autres réglages découlent de la RAM :

  • effective_cache_size n'est qu'une estimation pour le planificateur (4 GB par défaut). Réglez-la sur ce que shared_buffers et le page cache retiennent ensemble, pour que les index scans soient évalués correctement.
  • work_mem (4 MB par défaut) s'applique à chaque étape de tri ou de hachage dans chaque session. Une requête complexe l'utilise plusieurs fois, et de nombreuses sessions le font en même temps : augmentez-la avec prudence.

Selon l'enquête de Cobaltfell du 2 novembre 2026, 106 des 202 plans à CPU dédié relevés chez des hébergeurs qui acceptent la crypto sans vérification d'identité offraient 4 GB de RAM ou plus par vCPU. Pour une base de données, la RAM par vCPU compte autant que le nombre de vCPU.

Les plans derrière ce décompte sont listés dans combien coûte un VPS à CPU dédié par cœur en novembre 2026.

shared_buffers = 25 % de la RAM du plan, la valeur de départ de la documentation de PostgreSQL 18. La colonne « Fits » est un point de départ, pas une mesure : Nos propres résultats YABS et Geekbench 6, ainsi que le steal time que nous mesurons, seront publiés avec leur date dès la livraison de notre première machine de test. D'ici là, nous ne citons aucune performance de notre cru.
OffrevCPURAMshared_buffers à 25 %Adapté
Fell 224 GB1 GBLa base de données d'une application, quelques connexions actives à la fois
Fell 448 GB2 GBUn backend SaaS au trafic régulier, ou une base de données plus son application
Fell 8816 GB4 GBTrafic en direct plus rapports ou balayages parallèles
Fell 161632 GB8 GBDe nombreuses requêtes simultanées et un working set de plusieurs dizaines de gigaoctets

Comment le steal CPU affecte-t-il la latence p99 de PostgreSQL ?

Le steal CPU étire les 1 % de requêtes les plus lentes bien avant de faire bouger la moyenne. Le noyau Linux décrit le steal comme une attente involontaire : le temps où un vCPU avait du travail pendant que l'hyperviseur exécutait autre chose. Un backend mis en pause au milieu d'une requête s'arrête simplement, et chaque client qui attend cette requête, ou un verrou qu'elle détient, s'arrête avec lui.

Les pauses sont courtes et irrégulières, elles ne touchent donc que les requêtes qui se trouvent sur le CPU à ce moment-là. À titre d'illustration, pas de mesure : quand un vCPU perd de temps en temps quelques dizaines de millisecondes au profit d'un voisin, une requête de 2 ms qui tombe dans une de ces fenêtres prend dix fois plus longtemps, tandis que les milliers de requêtes autour s'exécutent à vitesse normale. La moyenne bouge à peine ; le 99e centile porte tout le coût.

Une base de données sur un vCPU partagé paraît donc saine en moyenne et produit quand même des timeouts. Trois relevés le révèlent :

  • Steal : la colonne %steal de mpstat pendant l'heure la plus chargée, expliquée dans ce qu'est le CPU steal time et comment le vérifier sur un VPS.
  • Pires cas : pg_stat_statements rapporte max_exec_time et stddev_exec_time par requête, et aucun centile.
  • Centiles : log_min_duration_statement (par exemple 250ms) journalise les requêtes lentes ; un histogramme de latence dans l'application donne le p99 lui-même.
Compter les requêtes actives, trouver les pires cas, surveiller le steal
# queries on the CPU right now (run at your busiest hour)
psql -c "SELECT count(*) FROM pg_stat_activity WHERE state = 'active';"

# statements with the worst single run (needs pg_stat_statements in shared_preload_libraries)
psql -c "SELECT left(query, 60) AS query, calls,
  round(mean_exec_time::numeric, 2) AS mean_ms,
  round(max_exec_time::numeric, 2) AS max_ms
  FROM pg_stat_statements ORDER BY max_exec_time DESC LIMIT 10;"

# steal per vCPU, every 5 seconds (package sysstat)
mpstat -P ALL 5 6

Qu'est-ce qu'un vCPU dédié change pour une base de données ?

Un vCPU dédié supprime la seule source de latence de queue qui ne se règle pas depuis l'intérieur du VPS. Les plans lents, les index manquants et la contention de verrous sont à corriger par l'opérateur ; le job batch d'un voisin sur un cœur partagé, non. Le cas général est exposé dans quelle est la différence entre un vCPU partagé et un vCPU dédié. Sur un VPS Cobaltfell :

  • CPU : Un vCPU correspond à un thread matériel du processeur hôte. Les vôtres sont épinglés un à un à votre VPS et ne sont jamais prêtés à un autre client, et les deux threads d'un cœur physique restent ensemble : ainsi, chaque 2 vCPU forment un cœur entier que nul voisin ne partage.
  • Steal : Sur un vCPU dédié, le steal time devrait être nul ou proche de zéro. Nous publierons la valeur que nous mesurons sur nos propres machines, avec sa date, et jamais une estimation.
  • Mémoire : La RAM de votre offre vous est réservée pour votre VPS et n'est pas surallouée.
  • Disque : Stockage NVMe sur toutes les offres.
  • Charge : La pleine charge est autorisée aussi longtemps que votre travail l'exige : aucun crédit CPU, aucune fenêtre de burst et aucun throttling après quelques minutes à 100 %. Un long VACUUM ou une construction d'index tourne à plein régime.

La famille de processeurs est AMD EPYC 9004/9005 (Zen 4 / Zen 5).

Quand un VPS n'est-il pas le bon hébergement pour PostgreSQL ?

Un VPS n'est pas le bon hébergement quand les données interrogées chaque minute sont bien plus grandes que la RAM du plus gros plan, ou quand les réplicas et les sauvegardes doivent être gérés pour vous. Fell 16 dispose de 32 GB. Un working set qui ne tient pas en mémoire transforme chaque requête en lecture disque, et c'est alors le débit de stockage, pas le vCPU, qui donne le rythme.

Les sauvegardes restent à la charge de l'opérateur : Les sauvegardes ne font partie d'aucune offre : gardez une copie de vos données ailleurs. Un pg_dump nocturne ou une archive WAL envoyée vers un stockage situé ailleurs couvre la plupart des petites bases de données ; un test de restauration figure au calendrier avant d'en avoir besoin.

Un basculement sur deux ou trois VPS avec réplication en streaming fonctionne, mais il est autogéré. Cobaltfell vend les serveurs, pas une base de données managée. Les prix de chaque taille sont listés sous combien coûte un VPS à cœurs dédiés.

Quelles autres questions se pose-t-on sur PostgreSQL sur un VPS ?

2 vCPU suffisent-ils pour PostgreSQL ?

Pour une application avec un nombre modéré de connexions actives, oui. Deux vCPU exécutent deux requêtes à la fois ; une troisième attend un thread libre. Fell 4 est l'étape suivante quand pg_stat_activity montre souvent plus de requêtes actives que de vCPU, ou quand l'application partage le VPS.

L'application et la base de données doivent-elles partager un seul VPS ?

Sur Fell 2 et Fell 4, c'est courant et cela économise un saut réseau. Les processus actifs de l'application comptent comme des utilisateurs de vCPU supplémentaires. Séparez-les quand les déploiements ou les pics de trafic commencent à apparaître dans le journal des requêtes lentes de la base de données.

PostgreSQL sur un VPS a-t-il besoin d'un pooler de connexions ?

Dans la plupart des applications web, oui. max_connections vaut 100 par défaut, et chaque connexion est un processus complet qui retient de la mémoire. Un pooler comme PgBouncer maintient le nombre de backends actifs proche du nombre de vCPU pendant que l'application ouvre autant de connexions client qu'elle le souhaite.

Que faut-il régler en premier après avoir installé PostgreSQL ?

shared_buffers à 25 % de la RAM, effective_cache_size à la mémoire que shared_buffers et le page cache retiennent ensemble, et log_min_duration_statement pour que les requêtes lentes laissent une trace. work_mem reste proche de sa valeur par défaut jusqu'à ce qu'un plan lent montre un tri qui déborde sur le disque.

Les sauvegardes sont-elles incluses avec un VPS Cobaltfell ?

Non. Les sauvegardes ne font partie d'aucune offre : gardez une copie de vos données ailleurs.

Sources (9)
  1. PostgreSQL 18 : consommation des ressources (shared_buffers, work_mem, processus worker) — The PostgreSQL Global Development Group (checked 2026-11-02)
  2. PostgreSQL 18 : planification des requêtes (effective_cache_size) — The PostgreSQL Global Development Group (checked 2026-11-02)
  3. PostgreSQL 18 : connexions et authentification (max_connections) — The PostgreSQL Global Development Group (checked 2026-11-02)
  4. PostgreSQL 18 : vacuum (autovacuum_max_workers) — The PostgreSQL Global Development Group (checked 2026-11-02)
  5. PostgreSQL 18 : rapports d'erreurs et journalisation (log_min_duration_statement) — The PostgreSQL Global Development Group (checked 2026-11-02)
  6. PostgreSQL 18 : comment les connexions sont établies — The PostgreSQL Global Development Group (checked 2026-11-02)
  7. PostgreSQL 18 : pg_stat_statements — The PostgreSQL Global Development Group (checked 2026-11-02)
  8. Le système de fichiers /proc : /proc/stat (steal) — The Linux kernel documentation (checked 2026-11-02)
  9. page de manuel mpstat(1) (%steal) — man7.org / sysstat (checked 2026-11-02)

À partir de $10.49/mois · sans KYC

Choisissez vos cœurs