[Application en JAVA] performance et load test

Hello!

Suite à mon post d’il-y-a-longtemps, je me suis embarqué dans la mesure des performances d’une application web (en java).

Le problème, est que je ne sais pas trop par où commencer. ça fait 2 mois que je galère, et là j’en peux plus. Je m’en tourne vers l’intelligence collective.

Voilà ce que j’aimerais faire :

  • à la base, n’importe quoi qui me permet de mesurer d’une manière ou d’une autre les performances de mon site web, à savoir : combien d’utilisateurs je peux avoir en même temps, et quand ça commence à bloquer, savoir où.

mais plus précisément :

  • pouvoir simuler un nombre assez conséquent d’utilisateurs qui font des actions.

Il existe le logiciel “selenium” qui simule des clicks de souris sur des liens (directement dans le navigateur), c’est le pied, mais ça fait qu’un seul utilisateur à la fois. Moi je cherche un truc qui fait many-many utilisateurs en même temps.

Le but serait, en utilisant glassbox (glassbox.com, un truc (programmé en “AOP” - je sais pas si ça ce dit, mais c’est pour dire que c’est non-intrusif ie. que l’équipe de programmeur n’a pas à se soucier de ce que je fais dans mon coin- ) qui analyse les applications tout seul) (ou un autre si vous avez des idées) de pouvoir voir là où ça bloque. (ça fait des diagnostics assez pertinent je trouve)

L’avantage, est que ça se passe dans des conditions (plus ou moins) réelles. Je commence à faire mes tests dans l’environnement de test donc c’est pas le réseau entre chez moi et les serveurs qui risque de poser problème.

La méthode vous semble bonne ou je me goure complètement ? vous ferez comment, vous ?

  • pouvoir traquer le “chemin” d’une requête. (un peu comme au dessus mais plus précis)

Par exemple, je clique sur un lien, et ça m’enregistre tout ce qui se passe dernière en mesurant les temps (quelles fonctions sont appelés et combien de temps elles ont mis) (dans l’idéal je peux choisir ensuite les fonctions à spotté)
Pour que de la même façons, en faisant faire ça à plusieurs utilisateurs je puisse voir si ça coince à un moment. (les bottlenecks quoi)

Comment faire ?

Un autre gros problème, est que l’application est très AJAX et qu’il faut se connecter pour accéder à toutes les fonctionnalités.

  • pour le AJAX : ça veut dire que les pages sont générés par le moteur javascript, donc dur de voir qu’est-ce qu’ils se passe vraiment. est-ce que c’est moi qui me stresse pour rien, ou c’est vraiment un problème pour simuler du traffic ?
  • pour se loger : pareil, tout est géré dans le javascript. faut que je me plonge dans le décryptage des requetes GET / POST pour “extraire” l’endroit où c’est envoyer ? une idée ?

Sinon, comment vous faites chez vous les tests de charges et de performances ? vous utilisez quels outils ? de quelles manières ? et dans le cas particulier d’une application web (ajax bordel qui plus est) ?

merci d’avance pour vos réponses.
(heeeeeeeeeeeeeeellpppp s’il vous plait!)

Ah oui, le site c’est unddu.de un myspace / facebook / pageflakes like et pour ma page à moi ichbin.colin.unddu.de/ pour avoir un aperçu un peu plus complet des fonctions du truc.

(je précise que si j’en viens à vous c’est parce que tout ce que j’ai pu demander dans mon entreprise n’a servi à rien)
(bon, me suis relu 3 fois j’espère que je suis clair et que je demande pas la lune B) )
edit : les liens

Par chez nous, on utilise ponctuellement Loadrunner ( http://www.mercury.com/fr/products/perform…ter/loadrunner/ ) pour simuler des users. Pas moi personnellement, du coup je manque d’experience pour t’aider, c’est juste une piste hein.

en gratuit, t’as aussi jmeter

Loadrunner à l’air interessant, mais faut leur téléphoner pour avoir un prix. Ils en ont si honte que ça ou quoi ?

Jmeter : je fais mumuse depuis 3 jours avec ça, ça fait des graphes qui représentent… rien, mais bon, c’est marrant à regarder faire.

Mon problème, toujours le même, est que le site est en ajax. C’est à dire que si je regarde dans le code source de la première page qu’il charge, il n’y a que … allez… 30 lignes et un appel à une fonction javascript, qui ELLE va construire la page.

Et je doute que jMeter execute la fonction javascript… donc en gros il me charge une page sans grand interet…

Quelqu’un d’autre à une idée ?

JMeter fait tout ça très bien. Je ne l’utilise pas personnellement mais on le fait dans ma boîte avec un site 100% AJAX.

Si ton JavaScript construit la page, il effectue certainement des requêtes à ton serveur, JMeter peut normalement très bien simuler l’envoie de ces requêtes, voir simuler tout un scénario d’interaction de l’utilisateur avec ton site. Encore une fois c’est ce qui est fait dans ma boîte.

Après je ne peux pas t’en dire plus, je ne travaille pas directement dessus, j’ai juste vu le truc à l’œuvre et c’est assez cool. Il fait des tests de charge avec beaucoup beaucoup de connexions simultanées.

Ah sinon, mon collègue combine ça avec TPTP sous Eclipse pour faire des mesures du côté serveur J2EE.

Enfin, je crois me souvenir que j’avais déjà répondu à ton ancien post et que je t’avais dit à peu près la même chose ([edit]effectivement : http://www.geekzone.fr/ipb/index.php?s=&am…st&p=557735[/edit]).

Et ça, ça vaut quoi : http://www.webload.org/.

JMeter, j’ai oublie de preciser, mais t’oulie les graphs. c’est de la merde.
Le seul moyen de l’utiliser c’est de sortir un tableau excel et de le traiter avec excel.

[quote=“pomcompot, post:5, topic: 45464”]JMeter fait tout ça très bien. Je ne l’utilise pas personnellement mais on le fait dans ma boîte avec un site 100% AJAX.

Si ton JavaScript construit la page, il effectue certainement des requêtes à ton serveur, JMeter peut normalement très bien simuler l’envoie de ces requêtes[/quote]

Effectivement. Merci de m’avoir mis sur la piste!

Si vous avez d’autres idées, toujours, n’hésitez pas… il me reste 2 mois B)

(et après je suis LIBRE et j’irais faire des trusc qui me plaisent)

Si Mercury donne pas les prix sur le net c’est que c’est très (très !) cher
Sinon tu peux utiliser opensta, qui est gratos et très bon

Un point à ne pas oublier quand on veut faire des tests de charge qui simulent plein d’utilisateurs concurrents c’est qu’il faut une grosse machine côté client (parce que injecter des requetes comme un malade ca bouffe du CPU !). Avec open-sta ce qui est sympa c’est qu’on peut faire du cluster (nous on installait des clients open sta sur tous nos postes de dev) pour faire un cluster de clients http (facon grid computing :wink:

Voilou, bon courage

Sur le marché, pour le test de perf, t’as “quelques” choix :

  • Loadrunner, le plus cher : tu payes au jour, au nombre de users à simuler, le consultant qui va te former…
    En revanche, il est le seul à ma connaissance à faire du test de perf sur un SAP et autres goodies.

  • Dans la catégorie “cher mais un peu moins”, tu as QTest de Quotium… Même bordel niveau tarifaire, mais en moins cher, et sans pouvoir faire de perf sur des CRM

  • Apres tu peux faire du JMeter (gratuit, en Java) et/ou OpenSTA (version light de QTest, gratuit).

Pour ma part, ayant testé JMeter (assez peu), réalisé une campagne de perf avec OpenSTA, et ayant un collègue de bureau ayant bossé sur OpenSTA et QTest… Je te conseillerai OpenSTA, qui semble plus correspondre à ton besoin.

Pour te faire une vue rapide de la réalisation du test… Dis toi qu’OpenSTA va monitorer ton IE pendant que tu dérouleras l’enchainement des écrans. Donc si une quelconque requete HTTP est transmise, via JS ou non, elle sera capturée dans OpenSTA.
Après, libre à toi de variabiliser ton scénario pour randomiser ce qui doit l’etre (je pense notamment aux scripts du type création de couple login/mdp), avec le langage propriétaire de OpenSTA (qui n’est pas bien compliqué).
Ensuite tu peux mettre bout à bout tes scénarii et lancer ta batterie de tests.

Grosso modo, avec un P4 2ghz et 1go de ram, compte 500 users simultanés pour que la machine reste stable.
Au dela, tu peux de toute facon avec OpenSTA clusteriser des machines, et en avoir un qui fera office de “controleur” pour lancer sur les machines distantes les tests simultanément.

Dans ma boite, pour les tests de performance on utilise Neo Load de Neotys qui à l’intérêt principal de ne pas avoir de langage de script, tout se fait via l’interface. Ca marche avec les applis ajax meme si ca demande parfois de la configuration manuelle.

Bonjour,

jmeter embarque jmeter-proxy qui te permet de générer ton scenario à partir d’une utilisation réelle

alors plutot que de simuler tes clics et/ou de faire tourner ton site dans un navigateur embarqué, je te conseille plutôt d’enregistrer des parcours types.