Planification5 min de lecture

Concevez un test de capacité VPS qui répond à une véritable question de planification

Un test de capacité est utile lorsqu'il explique quelle charge de travail un service peut soutenir dans des conditions données. Envoyer des requêtes jusqu'à ce que quelque chose échoue produit un chiffre, mais ce chiffre peut décrire un chemin de cache irréaliste ou un générateur de charge saturé. Commencez par la décision que le test doit étayer, puis concevez la charge de travail et les mesures en conséquence.

L'essentiel à retenir

Testez une charge de travail représentative dans un environnement autorisé, mesurez ensemble les réponses réussies et les distributions de latence, identifiez la couche contrainte et conservez les conditions avec le résultat.

Écrivez la décision avant de construire le test

Précisez ce qui change et ce que l'application doit continuer à faire. Une campagne à venir peut augmenter la navigation, tandis qu'une tâche d'importation peut entrer en concurrence avec le trafic API normal. Une modification de ressources peut viser à réduire les temps de réponse pendant un pic existant. Nommez le parcours important et son comportement acceptable. Évitez de commencer par un nombre arbitraire de requêtes sans rapport avec la façon dont les personnes ou les traitements en arrière-plan utilisent le service.

Consignez la version actuelle de l'application, la taille de la base de données, la région, les ressources d'hébergement et la configuration pertinente. Incluez la mise en cache, les limites de workers et les dépendances externes. Le résultat devient ainsi reproductible par un autre mainteneur. Si une exécution ultérieure modifie plusieurs de ces éléments à la fois, qualifiez-la de scénario différent plutôt que de la présenter comme la preuve qu'un CPU supplémentaire a tout résolu. Séparez les identifiants de test des comptes clients réels.

Utilisez un environnement de préproduction ou tout autre environnement maîtrisé, avec une autorisation explicite et une fenêtre adaptée. Coordonnez-vous avec l'équipe lorsque le test pourrait affecter une infrastructure partagée ou des limites de service. Remplacez les actions externes de paiement, d'e-mail et autres par des intégrations de test appropriées, sauf si une participation est organisée. Un exercice de capacité ne doit pas générer de vrais achats, envoyer un important lot de messages ni devenir un afflux de trafic non annoncé vers un autre service.

Modélisez la charge applicative réelle, pas un chiffre flatteur

Choisissez un mélange réaliste de requêtes et d'états de visiteurs. Les pages publiques en cache, les API authentifiées, les téléversements et les recherches coûteuses peuvent avoir des coûts très différents. Prévoyez des pauses adaptées ou un profil d'arrivée correspondant à la question de planification. Un test qui demande sans cesse la même petite réponse en cache peut aider à vérifier ce chemin, mais il n'établit pas la capacité des pages de compte ni des écritures en base de données. Expliquez cette limite avec le résultat.

ScénarioCe qu'il permet de déterminerCe qu'il n'établit pas
Page publique en cache chaudComportement d'un chemin de réponse réutilisableCapacité applicative personnalisée
Parcours d'API authentifiéLa charge applicative et base de données sélectionnéeTous les points de terminaison ou profils clients possibles
Tâche planifiée plus requêtes normalesContention pendant ce chevauchement connuTâches futures avec des données différentes
Arrivées croissantes par paliersPoint où la latence et les erreurs commencent à augmenterUn maximum universel pour la gamme d'hébergement

Remplissez le test avec des distributions de données représentatives. Une liste de produits contenant quelques lignes peut solliciter un comportement de requête différent d'une liste contenant un long historique. Utilisez des données synthétiques ou correctement protégées, et confirmez que les procédures de réinitialisation et de nettoyage fonctionnent avant l'exécution principale. Surveillez le CPU, le réseau et l'ordonnancement du générateur de charge autant que l'application. Sinon, un goulot d'étranglement du générateur peut faire paraître un serveur stable simplement parce que la charge prévue n'est jamais arrivée.

Mesurez les opérations terminées et définissez quand arrêter le test

Suivez ensemble le taux d'opérations réussies, les échecs et les distributions de latence. Une moyenne peut masquer des réponses anormalement lentes, tandis qu'un débit de requêtes élevé peut inclure des réponses qui font échouer le parcours utilisateur. Vérifiez le contenu des réponses ou le résultat applicatif lorsque c'est pertinent, plutôt que de considérer chaque réponse HTTP comme un succès. Séparez le temps de connexion du temps d'attente applicatif et du temps de transfert lorsque l'outillage le permet. Comparez ces observations avec les mesures du serveur et de la base de données sur la même période.

Définissez les conditions d'arrêt avant d'exécuter le test. Elles peuvent inclure des erreurs persistantes, une latence inacceptable, une pression excessive sur les ressources ou un signal indiquant qu'un autre système est affecté. Choisissez des valeurs adaptées à l'application et à l'environnement réels ; il n'existe pas de seuil universel prouvant que tout service est sain. Des seuils automatisés peuvent aider à évaluer une exécution, mais quelqu'un doit rester responsable du test, de ses effets et de la décision d'arrêter.

Augmentez la charge par paliers afin d'observer le changement plutôt que de passer immédiatement à un extrême. Maintenez une période stable assez longue pour observer le comportement lié à la charge, y compris les effets connus de file d'attente ou de cache. Notez le début du test et chaque changement de palier. Si la latence augmente alors que le CPU reste bas, examinez l'attente, la contention et les dépendances avant de conclure qu'il faut plus de cœurs.

Transformez le résultat en une étape suivante maîtrisée

  • Enregistrez la définition de la charge, les hypothèses sur les données et les versions logicielles.
  • Indiquez ensemble le nombre d'opérations réussies par seconde, le taux d'erreur et les centiles de latence.
  • Identifiez la couche probablement contrainte et les éléments qui l'étayent.
  • Modifiez un paramètre ou une ressource pertinent et répétez le même scénario.
  • Documentez la marge restante et les limites de la conclusion.

Par exemple, une API peut tenir sous des lectures ordinaires mais former une longue file d'attente lorsqu'un export planifié les chevauche. La réponse utile peut être de replanifier ou de repenser l'export, de réduire la durée des transactions ou d'ajuster la ressource appropriée. Une configuration d'hébergement plus grande est une intervention possible, pas l'unique issue. Vérifiez à nouveau le parcours applicatif complet après un changement, afin que des réponses plus rapides ne masquent pas un travail incorrect ou manquant.

Liez les résultats à leurs conditions lorsque vous choisissez un VPS. Un cœur virtuel, une allocation mémoire et un port réseau décrivent des ressources ; ils ne garantissent pas un nombre fixe de visiteurs ou de requêtes pour chaque application. Refaites le test après des changements significatifs du code, des données ou du profil de trafic. Le dimensionnement devient plus fiable lorsqu'il s'agit d'une comparaison répétée avec des hypothèses consignées, plutôt que d'un seul chiffre impressionnant détaché du système qui l'a produit.

Sources et compléments de lecture