ARCH.SIM|
Documentation
01

Guide de démarrage

5 étapes pour maîtriser le simulateur.

01

Ajouter des composants

Ouvrez le panneau de composants à gauche (bouton RACK dans le header). Les composants sont organisés en 7 catégories :

SimulationInfrastructureDonnéesRésilienceComputeCloudZones

Glissez un composant depuis le panneau et déposez-le sur le canvas.

02

Connecter les composants

Chaque composant possède des handles (points de connexion) sur ses bords. Cliquez sur un handle de sortie et tirez vers un handle d'entrée d'un autre composant.

Les connexions définissent le flux des requêtes pendant la simulation. Vous pouvez reconnecter une arête en tirant son extrémité vers un autre composant.

03

Configurer les propriétés

Cliquez sur un composant pour ouvrir le panneau de propriétés à droite. Chaque type a ses propres paramètres : latence, taux d'erreur, algorithme de répartition, politique d'éviction du cache, etc.

Les modifications sont sauvegardées automatiquement dans localStorage.

04

Lancer la simulation

Basculez en mode SIM via le toggle dans le header. Les contrôles apparaissent : Play, Pause, Stop, Reset. Choisissez une durée ou laissez en mode infini.

Le moteur PixiJS WebGL rend des particules GPU pour visualiser le flux des requêtes et réponses. Les composants changent de couleur selon leur état.

05

Analyser les résultats

La barre de télémétrie en bas affiche les métriques en temps réel. Cliquez dessus pour développer les détails :

Metrics— Latences, groupes de clients, utilisation serveurs
Output— Logs d'événements en temps réel
Bottlenecks— Détection automatique des goulots d'étranglement
Traces— Tracing distribué avec vue waterfall du chemin critique
Analytics— Métriques détaillées par composant avec synthèse post-simulation
02

Éditeur YAML

Définissez votre architecture en YAML — importez, exportez, versionnez. Une alternative puissante au drag & drop.

Structure du fichier

Un fichier YAML d'architecture contient 4 sections principales :

Structure de base
version: 1
name: "Mon Architecture"

zones:        # Optionnel — zones réseau
  backend:
    type: backend
    domain: "api.example.com"

components:   # Requis — vos composants
  clients:
    type: client-group
    config:
      virtualClients: 50

  server:
    type: http-server
    zone: backend
    config:
      port: 8080

connections:  # Requis — liens entre composants
  - from: clients
    to: server
version— Toujours 1
name— Nom libre de votre architecture
zones— Optionnel. Groupes logiques de composants
components— Requis. La clé = identifiant unique du composant
connections— Requis. Liste de liens from → to

Zones réseau

Les zones regroupent visuellement les composants. Un composant peut appartenir à une zone via la propriété zone.

Exemple de zones
zones:
  frontend:
    type: frontend        # frontend | backend | dmz | database | external
    domain: "app.example.com"
    subdomains:
      - "cdn.example.com"
    interZoneLatency: 5   # Latence inter-zone en ms
    position: { x: 50, y: 50 }
    size: { width: 400, height: 300 }
Types disponibles : frontend, backend, dmz, database, external

Composants

Chaque composant a un type et un bloc config optionnel. Si config est omis, les valeurs par défaut sont utilisées.

Exemples de composants
components:
  # Groupe de clients virtuels
  load-test:
    type: client-group
    config:
      label: "Load Test"
      virtualClients: 200
      rampUpTime: 5000
      distribution: uniform   # uniform | normal | burst

  # Serveur HTTP avec ressources
  api:
    type: http-server
    zone: backend             # Rattaché à la zone "backend"
    config:
      label: "API Server"
      port: 8080
      responseDelay: 50
      errorRate: 0.01

  # Base de données
  db:
    type: database
    zone: backend
    config:
      label: "PostgreSQL"
      maxConnections: 100
      queryDelay: 10

  # Load balancer
  lb:
    type: load-balancer
    config:
      algorithm: round-robin  # round-robin | least-connections | random
Type YAMLComposant
http-clientClient HTTP
http-serverServeur HTTP
client-groupGroupe de clients
api-gatewayAPI Gateway
load-balancerLoad Balancer
databaseBase de données
cacheCache
message-queueFile de messages
circuit-breakerCircuit Breaker
cdnCDN
wafWAF
firewallFirewall
serverlessServerless
containerContainer
service-discoveryService Discovery
dnsDNS
cloud-storageCloud Storage
cloud-functionCloud Function
host-serverServeur Hôte
api-serviceAPI Service
background-jobBackground Job
identity-providerIdentity Provider
network-zoneZone Réseau

Connexions

Les connexions définissent le flux de données entre composants. Utilisez l'identifiant du composant (la clé dans components).

Exemple de connexions
connections:
  - from: load-test    # ID du composant source
    to: lb             # ID du composant cible

  - from: lb
    to: api

  - from: api
    to: db

Utiliser l'éditeur

L'éditeur YAML est accessible depuis la barre d'outils du simulateur (bouton YAML).

EXPORTER|Charge l'architecture actuelle du canvas dans l'éditeur en YAML
APPLIQUER|Parse le YAML et remplace l'architecture sur le canvas
.YAML|Télécharge le contenu en fichier .yaml
COPIER|Copie le contenu dans le presse-papier
CHARGER|Importe un fichier .yaml depuis le disque
Astuce : Exportez votre architecture, modifiez le YAML, puis appliquez pour itérer rapidement. Les fichiers .yaml sont compatibles Git pour le versioning.
03

Catalogue des composants

22 types de composants répartis en 8 catégories. Chaque composant est configurable via le panneau de propriétés.

04

Templates d'architecture

8 architectures pré-configurées accessibles depuis le menu TPL dans le header.

Monolithe Simple

Architecture monolithique classique avec cache-aside pattern.

Client GroupServeurCacheDatabase
client-grouphttp-servercachedatabase
Cas d'usage

Application web classique avec un seul serveur et une base de données. Le cache Redis réduit la charge sur la DB.

Load Balanced

Architecture avec répartition de charge entre plusieurs serveurs.

Client GroupLoad Balancer2x ServeurDatabase
client-groupload-balancerhttp-serverdatabase
Cas d'usage

Application à fort trafic nécessitant la répartition de charge. Testez l'impact des algorithmes (Round Robin, Least Connections).

Microservices

Architecture microservices avec API Gateway comme point d'entrée.

Client GroupAPI Gateway2x ServiceDatabase
client-groupapi-gatewayhttp-serverdatabase
Cas d'usage

Architecture distribuée avec routage par chemin. Testez le rate limiting et l'authentification.

Event-Driven

Architecture event-driven avec communication asynchrone via Message Queue.

Client GroupServeurMessage Queue2x ConsumerDatabase
client-grouphttp-servermessage-queuedatabase
Cas d'usage

Système découplé avec traitement asynchrone. Le producteur répond immédiatement, les consommateurs traitent en arrière-plan.

E-Commerce Microservices

Plateforme e-commerce avec zones réseau, microservices et communication asynchrone.

Client GroupWAFLB6x MicroservicesDB + Cache + MQ
client-groupwafload-balancernetwork-zoneapi-gatewayservice-discoverymessage-queuedatabasecache
Cas d'usage

Architecture e-commerce complète avec séparation en zones (DMZ, Backend, Données). Testez la résilience, le scaling et la communication inter-services.

05

Référence métriques

Les métriques collectées pendant la simulation et comment les interpréter.

Métriques globales

Métriques affichées dans la barre de télémétrie pendant la simulation.

MétriqueDescriptionInterprétation
REQRequêtes envoyéesVolume total de trafic généré par les clients. Augmente linéairement en charge constante.
RESRéponses reçuesTotal des réponses (succès + erreurs). L'écart avec REQ = requêtes encore en transit.
ERR (%)Taux d'erreur< 1% acceptable | 1-5% à surveiller | > 5% problème systémique. Inclut les rejets et erreurs serveur.
P50Latence médianeLa moitié des requêtes sont plus rapides que ce seuil. Bon indicateur de la latence « typique ».
P95Latence 95e percentile95% des requêtes sont sous ce seuil. Indicateur clé pour les SLA. L'écart P50/P95 révèle la variabilité.
P99Latence 99e percentileCas limite — révèle les pics de latence sous charge. Un P99 élevé indique des congestions intermittentes.
RPSRequêtes par secondeDébit réel du système. Comparez avec le débit attendu (virtualClients / baseInterval).
CPU %Utilisation CPU< 70% sain | 70-90% attention | > 90% saturation. Surveillez par serveur pour identifier les goulots.
RAM %Utilisation mémoireMêmes seuils que CPU. Croissance continue = risque de fuite mémoire ou dimensionnement insuffisant.
Réseau %Utilisation réseauBande passante relative au max configuré. Rarement limitant sauf pour les gros payloads.
RejectionsRequêtes rejetéesCapacité dépassée. Consultez rejectionsByReason pour identifier la cause (rate-limit, capacity, circuit-open, etc.).
QueueRequêtes en fileIndique du backpressure. Croissance continue = serveurs sous-dimensionnés.
Seuils
Sain< 70%
Attention70-90%
Critique> 90%

Raisons de rejet

Lorsqu'une requête est rejetée, une raison est enregistrée dans les métriques. Voici les raisons possibles et comment les résoudre.

RaisonDescriptionComposantsSolution
rate-limitRequête bloquée par le rate limiter de l'API GatewayAPI GatewayAugmentez rateLimiting.requestsPerSecond ou burstSize.
capacityCapacité du serveur dépassée (connexions max + file pleine)HTTP Server, Database, ServerlessAugmentez maxConcurrent/queueSize ou ajoutez des serveurs.
circuit-openCircuit Breaker en état ouvert — protège le service en avalCircuit BreakerCorrigez le service défaillant en aval. Ajustez failureThreshold/timeout.
auth-failureAuthentification échouée (token expiré, clé invalide)API GatewayVérifiez authType et authFailureRate. Réduisez le taux si trop élevé.
waf-blockedRequête bloquée par le Web Application FirewallWAFAjustez blockRate. Vérifiez les règles de sécurité activées.
firewall-blockedRequête bloquée par le firewall réseauFirewallVérifiez defaultAction et allowedPorts. Retirez l'IP des blockedIPs.
timeoutRequête expirée (délai de connexion dépassé)HTTP Server, API GatewayAugmentez connectionTimeoutMs ou réduisez la charge.
oom-killedContainer tué pour dépassement de la limite mémoireContainerAugmentez memoryLimitMB ou optimisez la consommation mémoire.
dns-failureRésolution DNS échouéeDNSVérifiez les enregistrements DNS et le failover.
queue-fullFile de messages pleine, message rejetéMessage QueueAugmentez maxQueueSize ou ajoutez des consumers.

Guide d'interprétation

Comment lire un graphique RPS vs latence

Le RPS (requêtes par seconde) et la latence sont inversement corrélés sous charge. Quand le RPS augmente, la latence reste stable jusqu'à un point d'inflexion où les ressources saturent. Au-delà, la latence augmente exponentiellement tandis que le RPS plafonne ou diminue. Ce point d'inflexion représente la capacité maximale soutenable du système.

Identifier les goulots d'étranglement

Utilisez la métrique Saturation % de chaque serveur pour identifier la ressource limitante. La saturation correspond au maximum de CPU, mémoire et réseau. La première ressource à atteindre 100% est le goulot d'étranglement. Surveillez aussi la file d'attente : une croissance continue indique que le serveur ne peut pas absorber le trafic entrant.

Patterns typiques

Croissance linéaire — La latence augmente proportionnellement à la charge. Comportement sain avec dégradation linéaire. Le système scale prévisiblement.
Courbe en J — La latence reste basse puis explose soudainement. Typique de la dégradation quadratique ou exponentielle. Le point d'inflexion indique la capacité maximale.
Plateau + effondrement — Le RPS plafonne puis chute brusquement. Les rejets augmentent. Le système est au-delà de sa capacité et commence à refuser du trafic.
06

Connexions (Edges)

Les edges relient les composants et définissent le flux des requêtes. Chaque edge est configurable via un clic.

Propriétés des edges

Cliquez sur un edge pour ouvrir son panneau de configuration. Chaque edge possède les propriétés suivantes.

PropriétéTypeDéfautDescription
protocolenumautoProtocole de communication. « rest » : API RESTful HTTP/JSON. « grpc » : RPC binaire haute performance (HTTP/2, protobuf). « websocket » : connexion bidirectionnelle persistante. « graphql » : requêtes flexibles avec schéma. Auto-suggéré selon les composants connectés. Certains composants (database, cache, message-queue, background-job) utilisent une connexion directe sans protocole.
targetPortnumberPort cible sur le nœud de destination. OBLIGATOIRE pour les edges vers un Host Server — détermine quel conteneur enfant reçoit le trafic via les portMappings. Recommandé pour les edges vers un Firewall. Plage : 1-65535.
labelstringTexte affiché sur l'edge. Par défaut, affiche le protocole et le nombre de particules en transit. Utile pour documenter la connexion (ex: « auth », « data sync »).
colorstringautoCouleur personnalisée en hexadécimal. 6 couleurs prédéfinies : gris (#888888), bleu (#3b82f6), vert (#22c55e), orange (#f97316), rouge (#ef4444), violet (#8b5cf6). Utile pour distinguer les flux (rouge=erreurs, vert=succès).
strokeWidthnumber1.5Épaisseur en pixels (1-8). Augmentez pour mettre en évidence les flux critiques. Les edges sélectionnés passent à 2px avec un effet de brillance.
strokeStyleenumsolidStyle du trait. « solid » : continu (standard). « dashed » : pointillés (connexions optionnelles). « dotted » : points (connexions logiques ou futures).
pathTypeenumbezierType de courbe. « bezier » : courbe élégante automatique (défaut). « smoothstep » : angle arrondi en escalier. « straight » : ligne droite.

Matrice des protocoles

Chaque type de composant supporte un ensemble de protocoles. Les composants de stockage (database, cache, message-queue) utilisent une connexion directe sans protocole applicatif.

Type composantProtocoles supportés
Client HTTP
restgraphqlwebsocket
Serveur HTTP
restgraphqlwebsocket
Groupe de clients
restgraphqlwebsocket
API Gateway
restgrpcgraphqlwebsocket
Load Balancer
restgrpcwebsocket
Circuit Breaker
restgrpcgraphqlwebsocket
CDN
rest
WAF
restgraphqlwebsocket
Firewall
restgrpcgraphqlwebsocket
DNS
rest
Service Discovery
restgrpc
Serverless
restgrpc
Cloud Function
restgrpc
Cloud Storage
rest
Serveur Hôte
restgrpcgraphqlwebsocket
Container
restgrpcgraphqlwebsocket
API Service
restgrpcgraphql
Base de donnéesConnexion directe
CacheConnexion directe
File de messagesConnexion directe
Background JobConnexion directe
Identity Provider
rest
Zone RéseauConnexion directe

Particules animées

Pendant la simulation, des particules animées circulent le long des edges pour visualiser le flux de requêtes et réponses.

RequêteParticule bleue — requête en transit du client vers le serveur.
Réponse succèsParticule verte — réponse réussie du serveur vers le client.
Réponse erreurParticule rouge — réponse en erreur retournée au client.
07

Tracing distribué

Le simulateur trace chaque requête bout-en-bout à travers tous les composants traversés, générant des spans et des analyses de chemin critique.

Concepts clés

Span

Unité de travail atomique représentant le passage d'une requête dans un composant. Chaque composant traversé génère un span avec son temps de traitement, son statut et sa relation parent.

Trace (chaîne)

Ensemble de spans liés par un chainId commun, représentant le parcours complet d'une requête à travers l'architecture. La trace commence au client et se termine quand la réponse revient.

Chemin critique

Séquence de spans qui détermine la durée totale de la trace. Optimiser le chemin critique réduit directement la latence bout-en-bout.

Goulot d'étranglement (bottleneck)

Le span le plus long du chemin critique. Si un span database prend 80% du temps total, c'est le goulot. Il est mis en évidence visuellement dans le waterfall avec une icône d'alerte.

Pattern N+1

Anti-pattern où un composant est appelé N fois en série (ex: une requête DB par élément d'une liste au lieu d'un batch). Détecté automatiquement quand un même nœud apparaît 3+ fois dans une trace.

Waterfall

Visualisation horizontale de la trace où chaque span est représenté par une barre dont la position (gauche) indique le moment de début et la largeur indique la durée. Permet de voir le parallélisme et les dépendances.

Interface TraceSpan

Unité de travail atomique — un span est créé à chaque traversée d'un composant par une requête.

ChampTypeDescription
idstringIdentifiant unique du span, généré automatiquement.
chainIdstringIdentifiant de la chaîne de requêtes à laquelle appartient ce span. Tous les spans d'une même requête bout-en-bout partagent le même chainId.
nodeIdstringIdentifiant du nœud (composant) qui a traité cette étape de la requête.
nodeNamestringNom lisible du composant affiché dans le waterfall.
nodeTypestringType du composant (http-server, database, cache…). Détermine la couleur de la barre dans le waterfall.
parentSpanIdstringRéférence au span parent dans l'arbre d'appels. Permet de reconstruire la hiérarchie des appels.
startTimenumberTimestamp de début du traitement (en ms depuis le début de la simulation).
endTimenumberTimestamp de fin du traitement. Absent si le span est encore actif.
durationnumberDurée totale du span (endTime − startTime). Calculée automatiquement à la fin du traitement.
statusenumÉtat du span : « active » (en cours), « completed » (succès), « error » (échec). Les spans en erreur apparaissent en rouge dans le waterfall.

Interface RequestTrace

Trace complète regroupant tous les spans d'une chaîne de requêtes. Représente le parcours bout-en-bout.

ChampTypeDescription
chainIdstringIdentifiant unique de la trace complète, partagé par tous les spans de la chaîne.
spansobjectListe ordonnée de tous les TraceSpan de cette chaîne. Chaque span représente le passage de la requête dans un composant.
totalDurationnumberDurée totale de la trace (du premier startTime au dernier endTime). C'est le temps bout-en-bout perçu par le client.
startTimenumberTimestamp du début de la trace (= startTime du premier span).
endTimenumberTimestamp de fin de la trace (= endTime du dernier span complété).
statusenumÉtat global : « completed » si tous les spans ont réussi, « error » si au moins un span a échoué, « active » si des spans sont encore en cours.

Interface CriticalPathAnalysis

Analyse automatique du chemin critique, détection des goulots d'étranglement et des patterns N+1.

ChampTypeDescription
bottleneckSpanobjectLe span ayant la plus grande durée dans la trace. Représente le goulot d'étranglement principal. Affiché avec une icône d'alerte et un contour orange dans le waterfall.
timePerComponentobjectRépartition du temps par composant : nodeId, nodeName, nodeType, totalTime (ms) et percentage (%). Permet d'identifier quels composants consomment le plus de temps.
nPlusOnePatternsobjectDétection des patterns N+1 : lorsqu'un même composant (ex: database) est appelé plus de 2 fois dans une même trace, il est signalé comme un pattern N+1 potentiel. Inclut nodeId, nodeName et count.
totalDurationnumberDurée totale du chemin critique (peut différer de la durée totale de la trace si des appels sont parallèles).

Guide du Waterfall

Lecture du waterfall

L'axe horizontal représente le temps. Chaque ligne est un span. La longueur de la barre = durée du traitement. Les barres décalées vers la droite ont commencé plus tard. Des barres superposées verticalement = traitements parallèles.

Couleurs des barres

Chaque type de composant a sa couleur (bleu = client/serveur, violet = gateway, ambre = database, vert = cache, orange = message queue, rouge = circuit breaker). Les spans en erreur sont toujours rouges.

Sélection et navigation

Cliquez sur une trace dans la liste de gauche pour voir son waterfall détaillé. Cliquez sur un span pour sélectionner le composant correspondant dans le canvas et voir ses propriétés.

Répartition du temps

Sous le waterfall, la section « Time breakdown » montre le pourcentage de temps passé dans chaque composant. Un composant à 60%+ du temps total est un candidat prioritaire à l'optimisation.

Alertes N+1

Les patterns N+1 détectés sont affichés avec une icône d'alerte orange. Par exemple : « database appelée 5x » indique qu'il faudrait grouper ces appels en un seul (batch/join).

Filtrage

La barre de recherche filtre les traces par chainId ou par nom de nœud traversé. Utile pour retrouver les traces passant par un composant spécifique.

08

Erreurs de conception

Erreurs courantes dans la conception d'architectures et comment les corriger.

Connexions9

ErreurSévéritéDescriptionSolution
Source sans edge sortantERRORUn HTTP Client ou Client Group n'a pas de destination configurée. Aucune requête ne sera envoyée.Ajoutez une connexion (edge) vers un serveur, gateway ou load balancer.
Load Balancer sans backendERRORLe load balancer n'a aucun serveur backend connecté en aval.Connectez au moins un HTTP Server en sortie du load balancer.
Circuit Breaker incompletERRORLe circuit breaker doit avoir des connexions entrante ET sortante pour fonctionner.Placez-le entre un client/gateway (entrée) et un service fragile (sortie).
Cache sans fallback DBWARNINGLe cache n'a pas de base de données connectée en aval pour les cache miss.Connectez une base de données en sortie pour le pattern cache-aside.
CDN sans originWARNINGLe CDN avec un hit ratio < 100% n'a pas de serveur d'origine pour les cache miss.Connectez un HTTP Server en aval comme serveur d'origine.
Load Balancer à 1 backendINFOUn load balancer avec un seul backend ne répartit pas la charge.Ajoutez d'autres serveurs ou supprimez le load balancer.
Message Queue sans consumerWARNINGLa file n'a aucun service consommateur connecté. Les messages s'accumuleront.Connectez un service ou Background Job en aval.
Nœud isoléWARNINGLe composant n'a aucune connexion entrante ou sortante.Connectez-le au flux de requêtes ou supprimez-le s'il est inutile.
Edge invalide (dangling)ERRORL'edge référence un nœud source ou cible qui n'existe plus.Supprimez l'edge invalide.

Ports4

ErreurSévéritéDescriptionSolution
Edge → Host Server sans targetPortERRORLes edges vers un Host Server doivent spécifier un targetPort pour router vers les conteneurs internes.Configurez targetPort dans les propriétés de l'edge (clic sur l'edge).
Edge → Firewall sans targetPortWARNINGIl est recommandé de spécifier un targetPort pour les edges vers un Firewall.Ajoutez le port dans les propriétés de l'edge.
Port non résoluERRORLe targetPort de l'edge ne correspond à aucun portMapping du Host Server.Vérifiez les port mappings du serveur hôte et corrigez le targetPort.
Port mapping orphelinERRORUn port mapping référence un conteneur qui n'existe pas ou n'est pas enfant du Host Server.Corrigez le containerNodeId dans les port mappings.

Routage4

ErreurSévéritéDescriptionSolution
Gateway avec routes sans edgesWARNINGL'API Gateway a des règles de routage mais aucune connexion vers les services cibles.Connectez les services référencés dans les routeRules.
Route vers service non connectéWARNINGUne règle de routage référence un targetServiceName qui n'est pas connecté à la gateway.Connectez le service correspondant ou supprimez la règle orpheline.
Priorités dupliquéesWARNINGPlusieurs règles de routage ont la même priorité, causant un routage imprévisible.Assignez des priorités uniques à chaque règle.
API Service sans serviceNameWARNINGLe service n'a pas de nom unique configuré, rendant le routage par API Gateway impossible.Définissez un serviceName unique.

Ressources3

ErreurSévéritéDescriptionSolution
Surcharge client → serveurWARNINGLe groupe de clients génère plus de trafic que le serveur cible peut supporter (virtualClients > maxConcurrent).Augmentez la capacité du serveur ou réduisez le nombre de clients.
processingTime = 0INFOLe temps de traitement CPU est à 0ms (traitement instantané). La charge CPU ne sera pas simulée.Ajoutez un temps de traitement réaliste (10-100ms) si vous souhaitez simuler la charge.
Mémoire insuffisante prévisibleWARNINGmemoryPerRequestMB × maxConcurrent + baseUsageMB > totalMB. Le serveur manquera de mémoire sous charge maximale.Augmentez totalMB ou réduisez memoryPerRequestMB.

Champs obligatoires3

ErreurSévéritéDescriptionSolution
HTTP Server sans resourcesERRORLe serveur HTTP n'a pas de configuration de ressources.Configurez CPU, mémoire, réseau et connexions dans le panneau de propriétés.
Database sans performanceERRORLa base de données n'a pas de latences configurées.Configurez readLatencyMs, writeLatencyMs et transactionLatencyMs.
Cache sans configurationERRORLe cache n'a pas de configuration mémoire ni de politique d'éviction.Configurez maxMemoryMB, defaultTTLSeconds et evictionPolicy.

Configuration8

ErreurSévéritéDescriptionSolution
Serverless timeout < coldStartERRORLe timeout est inférieur au temps de cold start. La fonction timeout systématiquement au démarrage à froid.Augmentez timeoutMs au-dessus de coldStartMs.
Serverless min > max instancesERRORLe minimum d'instances est supérieur au maximum. Configuration invalide.Corrigez : minInstances doit être ≤ maxInstances.
Serverless concurrency = 0ERRORLa concurrence est à 0, aucune requête ne sera traitée.Définissez concurrencyLimit > 0.
Cron sans scheduleERRORUn job de type « cron » n'a pas d'expression cron configurée.Définissez schedule (ex: « 0/5 * * * * » = toutes les 5 min).
Batch sans batchSizeERRORUn job de type « batch » n'a pas de taille de lot configurée.Définissez batchSize.
virtualClients ≤ 0ERRORLe nombre de clients virtuels doit être positif (1-1000).Définissez un nombre entre 1 et 1000.
errorRate > 80%WARNINGUn taux d'erreur supérieur à 80% rend le service quasi inutilisable.Vérifiez si c'est intentionnel (chaos testing) ou une erreur de configuration.
CB timeout < 5000msINFOUn timeout très court peut causer des oscillations fréquentes open/half-open.Envisagez un timeout de 10s+ pour laisser le temps au service de se rétablir.

Hiérarchie2

ErreurSévéritéDescriptionSolution
Container sans Host ServerERRORUn conteneur doit être placé dans un Host Server.Faites glisser le conteneur dans un Host Server existant.
Port mapping vers non-enfantERRORUn port mapping du Host Server référence un conteneur qui n'est pas son enfant direct.Vérifiez que le conteneur cible est placé dans le Host Server.