Configurer le test de charge Azure pour une charge à grande échelle

Dans cet article, vous allez apprendre à configurer votre test de charge pour une mise à l’échelle élevée avec Azure Load Testing. Azure Load Testing extrait la complexité de l’approvisionnement de l’infrastructure pour simuler le trafic à grande échelle. Pour effectuer un scale-out d’un test de charge, vous pouvez configurer le nombre d’instances de moteur de test parallèles. Pour obtenir une distribution de charge optimale, vous pouvez surveiller les mesures d’intégrité de l’instance de test dans le tableau de bord Test de charge Azure.

Prérequis

  • Compte Azure avec un abonnement actif. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

  • Ressource de test de charge Azure existante. Pour créer une ressource de test de charge Azure, consultez le guide de démarrage rapide Créer et exécuter un test de charge.

Configurer des paramètres de charge pour un test de charge

Pour simuler le trafic utilisateur pour votre application, vous pouvez configurer le modèle de charge et le nombre d’utilisateurs virtuels pour utilisant lequel vous souhaitez simuler la charge. En exécutant le test de charge sur de nombreuses instances de moteur de test parallèles, Azure Load Testing peut effectuer un scale-out du nombre d’utilisateurs virtuels qui simulent le trafic vers votre application. Le modèle de charge détermine la façon dont la charge est distribuée pendant la durée du test de charge. Des exemples de modèles de charge sont linéaires, pas à pas ou charge de pic.

Selon le type de test de charge, basé sur l’URL ou JMeter, vous avez différentes options pour configurer la charge cible et le modèle de charge. Le tableau suivant répertorie les différences entre les deux types de test.

Type de test Nombre d’utilisateurs virtuels Modèle de charge
Basé sur l’URL (de base) Spécifiez le nombre cible d’utilisateurs virtuels dans la configuration du test de charge. Modèle de charge linéaire, basé sur le temps d’accélération et le nombre d’utilisateurs virtuels.
Basé sur l’URL (avancé) Spécifiez le nombre de moteurs de test et le nombre d’utilisateurs virtuels par instance dans la configuration du test de charge. Configurez le modèle de charge (linéaire, étape, pic).
Basé sur JMeter Spécifiez le nombre de moteurs de test dans la configuration du test de charge. Spécifiez le nombre d’utilisateurs virtuels dans le script de test. Configurez le modèle de charge dans le script de test.

Configurer les paramètres de chargement pour les tests basés sur l’URL

Pour spécifier les paramètres de chargement d’un test de charge basé sur l’URL :

  1. Dans le Portail Azure, accédez à votre ressource de test de charge Azure.

  2. Dans le volet de navigation de gauche, sélectionnez Tests pour voir tous les tests.

  3. Dans la liste, sélectionnez votre test de charge, puis sélectionnez Modifier.

    Screenshot that shows the list of load tests and the 'Edit' button.

    Vous pouvez également modifier la configuration de test à partir de la page de détails du test. Pour ce faire, sélectionnez Configurer, puis sélectionnez Test.

  4. Dans la page Informations de base, veillez à sélectionner Activer les paramètres avancés.

  5. Dans la page Modifier le test , sélectionnez l’onglet Charger .

    Pour les tests basés sur des URL, vous pouvez configurer le nombre d’instances de moteur de test parallèles et le modèle de charge.

  6. Utilisez le contrôle curseur des instances du moteur pour mettre à jour le nombre d’instances de moteur de test parallèles. Vous pouvez également entrer la valeur cible dans la zone d’entrée.

    Screenshot of the 'Load' tab on the 'Edit test' pane.

  7. Sélectionnez la valeur du modèle de chargement dans la liste.

    Pour chaque modèle, remplissez les paramètres de configuration correspondants. Le graphique fournit une représentation visuelle du modèle de charge et de ses paramètres de configuration.

    Screenshot of the 'Load' tab when editing a load test, showing how to configure the load pattern.

Configurer les paramètres de charge pour les tests basés sur JMeter

Pour spécifier les paramètres de chargement d’un test de charge basé sur JMeter :

  1. Dans le Portail Azure, accédez à votre ressource de test de charge Azure.

  2. Dans le volet de navigation de gauche, sélectionnez Tests pour voir tous les tests.

  3. Dans la liste, sélectionnez votre test de charge, puis sélectionnez Modifier.

    Screenshot that shows the list of load tests and the 'Edit' button.

    Vous pouvez également modifier la configuration de test à partir de la page de détails du test. Pour ce faire, sélectionnez Configurer, puis sélectionnez Test.

  4. Dans la page Modifier le test, sélectionnez l’onglet Charger. Utilisez le contrôle curseur Instances du moteur pour mettre à jour le nombre d’instances du moteur de test, ou entrez la valeur directement dans la zone d’entrée.

    Screenshot of the 'Load' tab on the 'Edit test' pane.

  5. Sélectionnez Appliquer pour modifier le test et utiliser la nouvelle configuration lorsque vous le réexécutez.

Surveiller les indicateurs de performance d’instance du moteur

Pour vous assurer que les instances du moteur de test, elles-mêmes ne sont pas un goulot d’étranglement des performances, vous pouvez surveiller les métriques de ressources de l’instance du moteur de test. Une utilisation élevée des ressources pour une instance de test peut influencer négativement les résultats du test de charge.

Le Test de charge Azure signale quatre indicateurs de performance des ressources pour chaque instance :

  • Pourcentage processeur.
  • Pourcentage de mémoire.
  • Octets réseau par seconde.
  • Nombre d’utilisateurs virtuels.

Une instance de moteur de test est considérée comme saine si le pourcentage moyen du processeur ou le pourcentage de mémoire pendant la durée de la série de tests reste inférieur à 75 %.

Pour afficher les métriques de ressources du moteur :

  1. Accédez à votre ressource de test de charge. Dans le volet gauche, sélectionnez Tests pour afficher la liste des tests de charge.

  2. Dans la liste, sélectionnez votre test de charge pour afficher la liste des séries de tests.

  3. Dans la liste des séries de tests, sélectionnez votre série de tests.

  4. Dans le tableau de bord de série de tests, sélectionnez Intégrité du moteur pour afficher les indicateurs de performance des ressources du moteur.

    Si vous le souhaitez, sélectionnez une instance de moteur de test spécifique à l’aide des filtres.

Screenshot that shows the load engine health metrics on the test run dashboard.

Résoudre les problèmes liés aux instances de moteur défectueuses

Si une ou plusieurs instances affichent une utilisation élevée des ressources, cela peut affecter les résultats des tests. Pour résoudre ce problème, essayez une ou plusieurs des procédures suivantes :

  • Réduisez le nombre de threads (utilisateurs virtuels) par moteur de test. Pour atteindre un nombre cible d’utilisateurs virtuels, vous pouvez augmenter le nombre d’instances de moteur pour le test de charge.

  • Assurez-vous que votre script est efficace, sans code redondant.

  • Si l’état d’intégrité du moteur est inconnu, réexécutez le test.

Déterminer les requêtes par seconde

Le nombre maximal de demandes par seconde (RPS) que le Test de charge Azure peut générer pour votre test de charge dépend de la latence de l’application et du nombre d’utilisateurs virtuels (VU). La latence de l’application correspond à la durée totale qui s’écoule entre l’envoi d’une requête d’application par le moteur de test et la réception de la réponse. Le nombre d’utilisateurs virtuels correspond au nombre de requêtes parallèles effectuées par Test de charge Azure à un moment donné.

Pour calculer le nombre de demandes par seconde, appliquez la formule suivante : RPS = (nombre d’unités virtuelles) * (1/latence en secondes).

Par exemple, si la latence de l’application est de 20 millisecondes (0,02 seconde) et que vous générez une charge de 2 000 VU, vous pouvez obtenir environ 100 000 RPS (2000 * 1/0,02s).

Pour atteindre un nombre cible de requêtes par seconde, configurez le nombre total d’utilisateurs virtuels pour votre test de charge.

Remarque

Apache JMeter signale uniquement les demandes qui ont été effectuées sur le serveur et de nouveau, réussies ou non. Si Apache JMeter ne parvient pas à se connecter à votre application, le nombre réel de demandes par seconde sera inférieur à la valeur maximale. Les causes possibles peuvent être que le serveur est trop occupé pour gérer la requête, ou qu’un certificat TLS/SSL est manquant. Pour diagnostiquer les problèmes de connexion, vous pouvez consulter le graphique des Erreurs dans le tableau de bord de test de charge et télécharger les fichiers journaux du test de charge.

Instances de moteur de test et utilisateurs virtuels

Dans le script Apache JMeter, vous pouvez préciser le nombre de threads parallèles. Chaque thread représente un utilisateur virtuel qui accède au point de terminaison de l’application. Nous vous recommandons de conserver le nombre de threads en dessous d’un maximum de 250.

Dans le Test de charge Azure, les instances de moteur de test sont responsables de l’exécution du script Apache JMeter. Toutes les instances du moteur de test s’exécutent en parallèle. Vous pouvez configurer le nombre d’instances pour un test de charge.

Le nombre total d’utilisateurs virtuels pour un test de charge est alors : unités virtuelles = (nombre de threads) * (nombre d’instances de moteur de test).

Pour simuler un nombre cible d’utilisateurs virtuels, vous pouvez configurer les threads parallèles dans le script JMeter et les instances du moteur pour le test de charge en conséquence. Surveillez les métriques du moteur de test pour optimiser le nombre d’instances.

Par exemple, pour simuler 1 000 utilisateurs virtuels, paramétrez le nombre de threads à 250 dans le script Apache JMeter. Configurez ensuite le test de charge avec quatre instances du moteur de test (c’est-à-dire 4 x 250 threads).

L’emplacement de la ressource de test de charge Azure détermine l’emplacement des instances du moteur de test. Toutes les instances du moteur de test dans une ressource de test de charge sont hébergées dans la même région Azure.