Tournevia

Prérequis et dimensionnement

Limites de ressources et mesures enregistrées pour l’application, le worker, le routeur et la construction du graphe.

Serveur recommandé selon l’usage

Mesuré le 20 octobre 2026 en émulant chaque taille de serveur avec Docker sur un AMD Ryzen 9 7945HX : le routeur et le calcul partageaient les mêmes fils matériels épinglés (un par vCPU, comme la plupart des offres VPS), avec des limites de mémoire. Chaque essai était un calcul complet sous le délai de 180 s d’un calcul, avec le budget de 5 s du solveur, sur des charges fictives, deux fois chacun. Un processeur de serveur peut être plus lent par fil que ce processeur de bureau : gardez une marge.

UsageServeur recommandéRemarques
Jusqu’à environ 100 livraisons par jour dans une ville2 vCPU / 8 GoGraphe Île-de-France ; la recherche d’adresses ne tient pas à côté
Jusqu’à 250 livraisons dans une zone urbaine dense2 vCPU / 8 Go suffit ; 4 vCPU / 16 Go pour la marge45–47 s sur 2 vCPU, 38 s sur 4, 30 s sur 8
Jusqu’à 250 livraisons réparties sur une région8 vCPU / 32 Go94–102 s. 4 vCPU / 16 Go passe tout juste (152–158 s) : augmentez JOB_TIMEOUT_SECONDS si vous l’utilisez. 2 vCPU échoue au délai de 180 s
Installation pour toute la France avec recherche d’adresses8 vCPU / 32 GoRouteur France jusqu’à 7,7 Gio et index d’adresses d’environ 5,2 Gio ; construisez le graphe France sur une machine de 16 Go si le serveur en a moins
Scénario2 vCPU / 8 Go4 vCPU / 16 Go8 vCPU / 32 GoPic du routeur
Démarrage : 2 véhicules, 10 livraisons0,4–2,6 s0,4–4,1 s0,5–4,0 s0,7–1,5 Gio
Petite flotte : 5 véhicules, 50 livraisons3,5–4,6 s3,4–5,2 s2,6–4,0 s1,8–3,6 Gio
Flotte moyenne : 10 véhicules, 100 livraisons9,4–9,8 s8,3–8,7 s7,0–7,3 s1,8–3,6 Gio
Grande ville : 25 véhicules, 250 livraisons, Paris dense45–47 s38 s30 s1,9–3,7 Gio
Régional : 25 véhicules, 250 livraisons, graphe Île-de-Franceéchec à 180 s154–157 s94–95 s3,3–6,6 Gio
La même journée régionale sur le graphe Franceéchec à 180 s152–158 s99–102 s4,0–7,7 Gio

Presque tout le temps est consacré à la matrice routière (87 s sur 94 pour la journée régionale sur 8 vCPU) ; le solveur utilise son budget de 5 s et le routage et la validation prennent environ 2 s. La mémoire du routeur augmente avec ses fils (2 sur la taille 2 vCPU, 4 sur les autres). Le calcul lui-même a culminé à 112 Mio ; avec les données d’un calcul, l’API utilisait 79 Mio, le worker 59 Mio et PostgreSQL 41 Mio.

Côté disque, les images occupent environ 1,1 Go et le graphe Île-de-France 0,32 Go. Une installation pour toute la France ajoute 4,1 Go de graphe, 1,1 Go d’images du géocodeur et 3,2 Go de données d’adresses, plus environ 20 Go libres pendant la construction du graphe France sur le serveur. Ajoutez le système, les journaux et les sauvegardes, qui grandissent avec vos données.

Un seul worker exécute un calcul à la fois : les calculs en attente passent l’un après l’autre. Le script scripts/benchmark_sizing.py du kit refait ces mesures sur votre propre machine.

Nature de ces chiffres

Les chiffres ci-dessous proviennent des fichiers Compose du kit et de mesures enregistrées sur des charges fictives. Les limites Compose sont des plafonds, pas une consommation mesurée. Mesurez votre propre charge avant de vous fier à une installation : un petit VPS peut héberger l’application sans être adapté à la construction du graphe ou à des calculs de 250 livraisons.

Le kit cible Linux AMD64 et nécessite Python 3.11+, Docker et Compose 2.24.4+.

Limites d’un calcul

LimiteValeur
Véhicules par calcul25
Livraisons par calcul250
Points distincts, dépôt compris251
Distance entre deux points d’un même calculMATRIX_MAX_KM, 200 km par défaut, égale à celle de la construction du graphe
Profils de camion exacts par calcul3
Période planifiéeUne journée Europe/Paris avec fenêtres horaires strictes
Délai d’un calcul completJOB_TIMEOUT_SECONDS, 180 s par défaut (1–600), enregistrement compris
Budget du solveur1–60 s
Calculs en attente ou en cours5 au plus par entreprise

Une installation dispose d’un seul worker, qui exécute un calcul à la fois ; un second worker s’arrête. Ne multipliez pas le service worker.

Limites des conteneurs dans les fichiers Compose

ServiceMémoireCPURemarques
postgres1 Gio—PostgreSQL 16
setup512 Mio—S’exécute avant l’API et le worker, puis s’arrête
api1 Gio—
worker2 Gio2Le processus enfant de calcul est limité à 1,5 Gio d’espace d’adressage
https (surcouche HTTPS) ou edge (derrière un proxy existant)128 Mio—
valhalla (surcouche de routage)ROUTING_MEMORY, 4 Gio par défaut—ROUTING_THREADS, 2 par défaut
addok-redis (surcouche de géocodage)GEOCODER_MEMORY, 8 Gio par défaut—Index des adresses ; addok demande au moins 6 Go
addok (surcouche de géocodage)1 Gio—GEOCODER_WORKERS, 2 par défaut

Sans compter setup, qui s’arrête, les limites totalisent environ 4,1 Gio sans le routeur et environ 8,1 Gio avec la valeur par défaut de la surcouche de routage. La surcouche de géocodage ajoute environ 9 Gio avec ses valeurs par défaut. Chaque conteneur conserve au plus trois fichiers journaux de 10 Mio.

Calculs mesurés

ChargeRessourcesMesure
Île-de-France régionale, 250 livraisons, calcul en fileRouteur séparé avec 8 CPU, 8 Gio et 4 workers de routage, MATRIX_CONCURRENCY=4 ; application 2 CPU, 2 Gio118–123 s par calcul, enregistrement compris
Paris dense, 250 livraisonsRouteur avec 4 CPU, un quota de 8 Gio et 4 workers de routage ; application 2 CPU, 2 Gio48,94–60,20 s par calcul ; pic mémoire du routeur 6,07 Gio

Un routeur à deux CPU et 2 Gio n’a pas tenu le délai régional lors de ces essais. Un routeur à 2 Gio, deux CPU et deux threads est l’exemple du kit pour le premier contrôle à dix livraisons. La valeur par défaut de la surcouche de routage (4 Gio, deux threads) n’a pas de mesure enregistrée à 250 livraisons.

Construction du graphe

ÉtapeRessources enregistrées
Extrait Île-de-France338 509 338 octets, téléchargé le 22 septembre 2026, empreinte fixée dans deploy/engines.json
Construction du graphe régionalConteneur limité à 6 Gio et 2 CPU
Graphe de test des restrictionsConteneur limité à 2 Gio et 2 CPU
Durée et disquePlusieurs minutes et plusieurs Go
Extrait France5,1 Go, données du 18 octobre 2026, empreinte fixée dans deploy/engines.json
Construction du graphe FranceEnviron 11 minutes avec 8 fils dans un conteneur limité à 16 Go, sur une machine à 32 CPU, dans un volume Docker ; 4,1 Go de tuiles ; gardez environ 20 Go libres
Service routier France6,1 Gio occupés après la série d’essais du moteur réel ; prévoyez 8 Go

La préparation du graphe peut consommer davantage de ressources que l’application. Le routeur peut fonctionner sur une autre machine privée, comme décrit dans l’installation.

Recherche d’adresses

Le paquet de la Base Adresse Nationale fait environ 2,5 Go à télécharger et 3,2 Go une fois décompressé. Le chargement de son index prend une à deux minutes après chaque démarrage. Avec le paquet du 19 octobre 2026, une recherche a pris de 4 à 28 ms à l’intérieur de l’installation, pour des adresses de Paris, Lyon et Marseille.

Non mesuré

  • Des journées plus chargées sur un vrai VPS : les tailles ci-dessus ont été émulées sur une seule machine de bureau. Sur un vrai VPS de 2 vCPU et 8 Go partagé avec Coolify, seul l’exemple de dix livraisons a été calculé (3,3 à 4,6 s ; au repos ensuite, Tournevia occupait environ 1,1 Go, dont 0,9 Go pour le routeur) ; voir Installer sur un VPS, pas à pas.
  • Croissance de la base et des sauvegardes dans le temps.
  • Utilisateurs simultanés.
  • Durée de calcul et qualité des tournées pour des livraisons hors Île-de-France : sur le graphe France, la journée régionale chronométrée utilisait des points d’Île-de-France ; ailleurs, seuls des contrôles de routage et un plan de dix livraisons à Lyon ont été réalisés.
  • Charges au-delà des limites ci-dessus.

Sur cette page