mercredi 6 mai 2009

Application web : la différence entre Mesure de performance, montée en charge et vitesse d’exécution

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

JDBC Statement Types

Prepared Statement Cache

• 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

Architecte SOA & Professionnel Open Source Headline Animator

 
Khaled BEN DRISS
Cloud Computing, SOA et Web 2.0 : Des sujets techniques sur SOA et l'Open Source : de Java & .Net, PHP5, Symfony, à SaaS / PaaS en passant par Azure, google appengine, le BPM, la Modélisation et d'autres sujets du coté du serveur et cloud computing.