Une longue discussion ce matin: “comment faire pour avoir une application web performante, en terme de temps de réponse”.
Constat : une confusion entre les deux concepts : performance au sens de Montée en charge et performance au sens rapidité/vitesse d’exécution.
Montée en charge Vs performance
La montée en charge est la capacité d'un système à traiter une augmentation de la charge sans une dégradation perceptible de la performance.
Ainsi, la notion d'évolutivité est liée à celle de la performance, mais elle est différente de.
Prenons le cas d'une application web ayant N utilisateurs, et présentant un temps de réponses moyen acceptable de "t" secondes.
Cette application web est elle capable de maintenir ce niveau acceptable de performance, (réponse moyenne "t" secondes), si le nombre d'utilisateurs devient 2N, 3N, 10N …
La montée en charge reflète également la capacité d'une application Web de maintenir un niveau acceptable de performance lorsque de nouvelles ressources matérielles ou logiciels sont ajoutés à celui-ci.
Beaucoup d'applications Web ne parviennent pas à monter en charge, même si elles sont "performantes" à faible sollicitation, parce qu'elles n'ont jamais été conçues pour fonctionner sur plusieurs serveurs, ou ne parviennent pas à tirer parti de toutes les ressources matérielles à leur disposition.
Comment « démontrer » une capacité de monté en charge
L'objectif des tests de charge est de déterminer les performances et la capacité de montée en charge (Scalability ou évolutivité) d'une application Web.
Qu'est ce qu'on doit analyser
Penser en terme de « transactions utilisateur » ou « use cases » pour votre application
Les exemples typiques d'une transaction simple pourraient être …
- Logging in
- Demander la position d'un compte
- Comparer un prix
Observer l'usage des ressources par cas d'utilisation (spécialement les pointes)
St Rester concentré sur ce que vos clients font avec votre application… pourquoi perfectionner quelques choses d'autres ?
Qu'est ce qu'on doit observer
Les facteurs qui influent sur les performances sont parfois en dehors de l'application elle-même.
Ces facteurs comprennent
- la configuration du réseau et la plate-forme matérielle caractéristiques,
- le système d'exploitation paramètres,
- paramètres de réglage de la machine virtuelle Java
- paramètres de réglage des paramètres de base de données,
- et surtout l'architecture de l'application Web elle-même.
Ainsi, il est primordiale d'observer le comportement des ces facteurs lors d'une étude de performance, afin de s'assurer de la validité des résultats :
Les ressources
• Conteneur Web
• Sessions HTTP
• Pools de Thread
• Utilisation CPU
• Utilisation des I/O
• Utilisation réseau
L'usage de la Mémoire
• Garbage collection
• fuite de mémoires
Les Pools de connections
• Exceptions
Messaging
• JMS
• File d'attente
Qu'est ce qu'on doit utiliser pour simuler une montée en charge
Les outils ne manquent pas :
Radview WebLoad (open source)
OpenSTA (open source)
JMeter (open source)
Mercury LoadRunner (HP)
Compuware QALoad
Rational Robot (Performance Studio, IBM)
Microsoft Web Applicatio Stress Tool
Et d’autres sur http://opensourcetesting.org/performance.php
Mais, n’oubliez jamais que l’outil n’est rien sans processus
Mais, ceci est une autre histoire
0 commentaires :
Enregistrer un commentaire