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.
| Usage | Serveur recommandé | Remarques |
|---|---|---|
| Jusqu’à environ 100 livraisons par jour dans une ville | 2 vCPU / 8 Go | Graphe Île-de-France ; la recherche d’adresses ne tient pas à côté |
| Jusqu’à 250 livraisons dans une zone urbaine dense | 2 vCPU / 8 Go suffit ; 4 vCPU / 16 Go pour la marge | 45–47 s sur 2 vCPU, 38 s sur 4, 30 s sur 8 |
| Jusqu’à 250 livraisons réparties sur une région | 8 vCPU / 32 Go | 94–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’adresses | 8 vCPU / 32 Go | Routeur 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énario | 2 vCPU / 8 Go | 4 vCPU / 16 Go | 8 vCPU / 32 Go | Pic du routeur |
|---|---|---|---|---|
| Démarrage : 2 véhicules, 10 livraisons | 0,4–2,6 s | 0,4–4,1 s | 0,5–4,0 s | 0,7–1,5 Gio |
| Petite flotte : 5 véhicules, 50 livraisons | 3,5–4,6 s | 3,4–5,2 s | 2,6–4,0 s | 1,8–3,6 Gio |
| Flotte moyenne : 10 véhicules, 100 livraisons | 9,4–9,8 s | 8,3–8,7 s | 7,0–7,3 s | 1,8–3,6 Gio |
| Grande ville : 25 véhicules, 250 livraisons, Paris dense | 45–47 s | 38 s | 30 s | 1,9–3,7 Gio |
| Régional : 25 véhicules, 250 livraisons, graphe Île-de-France | échec à 180 s | 154–157 s | 94–95 s | 3,3–6,6 Gio |
| La même journée régionale sur le graphe France | échec à 180 s | 152–158 s | 99–102 s | 4,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
| Limite | Valeur |
|---|---|
| Véhicules par calcul | 25 |
| Livraisons par calcul | 250 |
| Points distincts, dépôt compris | 251 |
| Distance entre deux points d’un même calcul | MATRIX_MAX_KM, 200 km par défaut, égale à celle de la construction du graphe |
| Profils de camion exacts par calcul | 3 |
| Période planifiée | Une journée Europe/Paris avec fenêtres horaires strictes |
| Délai d’un calcul complet | JOB_TIMEOUT_SECONDS, 180 s par défaut (1–600), enregistrement compris |
| Budget du solveur | 1–60 s |
| Calculs en attente ou en cours | 5 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
| Service | Mémoire | CPU | Remarques |
|---|---|---|---|
postgres | 1 Gio | — | PostgreSQL 16 |
setup | 512 Mio | — | S’exécute avant l’API et le worker, puis s’arrête |
api | 1 Gio | — | |
worker | 2 Gio | 2 | Le 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
| Charge | Ressources | Mesure |
|---|---|---|
| Île-de-France régionale, 250 livraisons, calcul en file | Routeur séparé avec 8 CPU, 8 Gio et 4 workers de routage, MATRIX_CONCURRENCY=4 ; application 2 CPU, 2 Gio | 118–123 s par calcul, enregistrement compris |
| Paris dense, 250 livraisons | Routeur avec 4 CPU, un quota de 8 Gio et 4 workers de routage ; application 2 CPU, 2 Gio | 48,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
| Étape | Ressources enregistrées |
|---|---|
| Extrait Île-de-France | 338 509 338 octets, téléchargé le 22 septembre 2026, empreinte fixée dans deploy/engines.json |
| Construction du graphe régional | Conteneur limité à 6 Gio et 2 CPU |
| Graphe de test des restrictions | Conteneur limité à 2 Gio et 2 CPU |
| Durée et disque | Plusieurs minutes et plusieurs Go |
| Extrait France | 5,1 Go, données du 18 octobre 2026, empreinte fixée dans deploy/engines.json |
| Construction du graphe France | Environ 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 France | 6,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.