{"id":36,"date":"2007-09-25T15:38:02","date_gmt":"2007-09-25T15:38:02","guid":{"rendered":"http:\/\/blog.milamberspace.net\/index.php\/jmeter-test-de-charges-dun-site-web-mode-demploi\/executer-son-scenario-de-tir-de-charges"},"modified":"2012-09-28T07:01:41","modified_gmt":"2012-09-28T06:01:41","slug":"executer-son-scenario-de-tir-de-charges","status":"publish","type":"page","link":"https:\/\/blog.milamberspace.net\/index.php\/jmeter-pages\/jmeter-test-de-charges-dun-site-web-mode-demploi\/executer-son-scenario-de-tir-de-charges","title":{"rendered":"Ex\u00e9cuter son sc\u00e9nario de tir de charge"},"content":{"rendered":"<p><span style=\"text-decoration: underline;\"><strong>JMeter : Ex\u00e9cuter son sc\u00e9nario de tir de charge <\/strong><\/span><\/p>\n<p>Le sc\u00e9nario fonctionnel est donc dans JMeter, nous y avons apport\u00e9 des affinages, et \u00e9galement personnalis\u00e9 les tests d&rsquo;assertion de chaque requ\u00eate. Pour finir, nous avons contr\u00f4l\u00e9 que l&rsquo;ex\u00e9cution d&rsquo;une passe (1 utilisateur virtuel qui ex\u00e9cute 1 fois le sc\u00e9nario) se d\u00e9roule correctement.<\/p>\n<p>Il nous reste \u00e0 passer \u00e0 la vitesse sup\u00e9rieure : stresser un peu plus son serveur Tomcat&#8230; Pour cela  nous allons jouer sur les param\u00e8tres de l&rsquo;\u00e9l\u00e9ment <strong>Groupes d&rsquo;unit\u00e9s<\/strong>.<\/p>\n<p>Allez donc sur le <strong>Groupe d&rsquo;unit\u00e9s<\/strong> pour ajouter les utilisateurs virtuels (disons 100), sur une p\u00e9riode de mont\u00e9e en charge de 50 secondes, et chaque utilisateur virtuel va ex\u00e9cuter 50 fois le sc\u00e9nario de tir.<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Modification du thread group pour 10 VU \/ RAP 10s \/ Loop100\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page4\/30-jmeter-config-tir.png\" border=\"1\" alt=\"Modification du thread group pour 10 VU \/ RAP 10s \/ Loop100\" width=\"636\" height=\"296\" \/><br \/>\n<\/span><\/p>\n<p>On relance le tir de charge (<strong>Ctrl+E<\/strong>, pour effacer les r\u00e9sultats, puis <strong>Ctrl+R<\/strong>, pour lancer le test).<\/p>\n<p>On note que pendant l&rsquo;ex\u00e9cution du tir de charge, en haut \u00e0 droite de la fen\u00eatre JMeter, il y a :<\/p>\n<ul>\n<li>Un petit carr\u00e9 qui est vert, ce qui signifie que le tir est en cours, quand il sera termin\u00e9, il deviendra gris<\/li>\n<li>Le premier chiffre (21) indique le nombre d&rsquo;utilisateurs virtuels en train de \u00ab\u00a0travailler\u00a0\u00bb<\/li>\n<li>Le deuxi\u00e8me chiffre (100) indique le nombre d&rsquo;utilisateurs virtuels pr\u00e9vus pour ce test de charge (la valeur du champ <em><strong>Nombre d&rsquo;unit\u00e9s<\/strong><\/em><strong><em> (utilisateurs)<\/em><\/strong> dans l&rsquo;\u00e9l\u00e9ment<strong> Groupes d&rsquo;unit\u00e9s<\/strong>)<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Carr\u00e9 vert pendant l'execution du tir\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page4\/31-jmeter-tir-encours.png\" border=\"1\" alt=\"Carr\u00e9 vert pendant l'execution du tir\" width=\"142\" height=\"134\" \/><\/span><br \/>\n<span style=\"text-decoration: underline;\">Voici le r\u00e9sultat de l&rsquo;ex\u00e9cution de ce petit tir de charge :<\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"R\u00e9sultat d'un tir avec 1000 acc\u00e8s\" src=\"\/wp-content\/images\/jmeter01-img\/nouv\/page4\/32-jmeter-resultats-tir.png\" border=\"1\" alt=\"R\u00e9sultat d'un tir avec 1000 acc\u00e8s\" width=\"821\" height=\"258\" \/><br \/>\n<\/span><\/p>\n<p>Et voil\u00e0, au total, 30000 requ\u00eates (6 fois 5000 requ\u00eates). Chaque requ\u00eate de test a \u00e9t\u00e9 demand\u00e9e 5000 fois (100 utilisateurs virtuels X 50 it\u00e9rations).<\/p>\n<p><span style=\"text-decoration: underline;\"><em>Quelques explications sur les colonnes :<\/em><\/span><\/p>\n<ul>\n<li><strong>Libell\u00e9 :<\/strong> &lsquo;Identifiant&rsquo; de l&rsquo;\u00e9l\u00e9ment (son nom)<\/li>\n<li><strong># Echantillons :<\/strong> Nombre d&rsquo;ex\u00e9cution de l&rsquo;\u00e9chantillon (ou groupement d&rsquo;\u00e9chantillons)<\/li>\n<li><strong>Moyenne (ms) :<\/strong> Moyenne de temps de r\u00e9ponse pour l&rsquo;ensemble des requ\u00eates d&rsquo;un m\u00eame \u00e9l\u00e9ment<\/li>\n<li><strong>Min (ms) : <\/strong>Valeur du temps de r\u00e9ponse minimum<\/li>\n<li><strong>Max (ms) : <\/strong>Valeur du temps de r\u00e9ponse maximum<\/li>\n<li><strong>Ecart type (ms) :<\/strong> R\u00e9partition des \u00e9chantillons autour de la valeur moyenne<\/li>\n<li><strong>% Erreur :<\/strong> Pourcentage de r\u00e9sultats marqu\u00e9 en erreur<\/li>\n<li><strong>D\u00e9bit :<\/strong> Bande passante exprim\u00e9e en sec ou min ou heure (C&rsquo;est-\u00e0-dire, combien de fois on peut avoir l\u2019\u00e9l\u00e9ment en 1 sec ou 1 min ou 1 heure)<\/li>\n<li><strong>Ko\/sec : <\/strong>Vitesse de transfert en Kilo-octets par seconde<\/li>\n<li><strong>Moy. octets :<\/strong> Moyenne des octets. Indique le nombre d\u2019octets moyenne transf\u00e9r\u00e9s<\/li>\n<\/ul>\n<p><strong>Ceci conclut cette petite introduction aux tests de charges d&rsquo;un site Web avec Apache JMeter.<\/strong><\/p>\n<p><strong><span style=\"text-decoration: underline;\">Quelques remarques :<\/span><\/strong><\/p>\n<ul>\n<li>Ceci est une petite introduction \u00e0 l&rsquo;utilisation de JMeter pour faire un tir de charge sur un \u00ab\u00a0site Web\u00a0\u00bb. C&rsquo;est modeste, il faut en effet, faire plusieurs types de tests de charge pour avoir une bonne id\u00e9e des performances d&rsquo;un environnement (par exemple, de bande passante, de transactions\/sec, de vitesse de croisi\u00e8re, par paliers de VU (utilisateurs virtuels), par p\u00e9riode Normale\/Pic\/Normale, etc.)<\/li>\n<li>Par ailleurs, l&rsquo;\u00e9l\u00e9ment <strong>Rapport consolid\u00e9<\/strong> est insuffisant pour avoir un bon aper\u00e7u des performances d&rsquo;une plateforme, il faut en effet regarder l&rsquo;\u00e9volution des temps de r\u00e9ponse durant le tir, par exemple \u00e0 travers un r\u00e9cepteur <strong>Graphique de r\u00e9sultats<\/strong> dans JMeter, ou \u00e0 travers un tableau crois\u00e9 dynamique (table pivot) dans OpenOffice Calc ou Microsoft Excel (ou Access). Le table pivot r\u00e9cup\u00e9rant les donn\u00e9es depuis le fichier d&rsquo;enregistrement des r\u00e9sultats de JMeter (champ <strong><em>Ecrire les donn\u00e9es dans un fichier<\/em><\/strong>). Le travail sur les donn\u00e9es d&rsquo;un r\u00e9sultat de test de charge sera l&rsquo;un des prochains articles sur mon blog, patience donc. <strong><em>MAJ: <a href=\"http:\/\/blog.milamberspace.net\/index.php\/jmeter-tir-de-charges-par-paliers-et-exploitation-des-resultats\">L&rsquo;article est fait, clic ici.<\/a><\/em><\/strong><\/li>\n<li>N&rsquo;allez pas mettre 10000 VU, et lancer un nouveau tir de charge&#8230; vous allez surcharger la bande passante de votre carte r\u00e9seau, votre CPU, et vous aurez peut-\u00eatre m\u00eame un OutOfMemory de la JVM ex\u00e9cutant JMeter. Si vous devez simuler beaucoup d&rsquo;utilisateurs, il est pr\u00e9f\u00e9rable d&rsquo;utiliser plusieurs \u00ab\u00a0injecteurs\u00a0\u00bb (stations JMeter) qui seront pilot\u00e9s par une station JMeter principale. La aussi, il faut que j&rsquo;en fasse un article. <strong><em>MAJ: <a href=\"http:\/\/blog.milamberspace.net\/index.php\/jmeter-test-de-charges-a-distance-distributed-testing\">L&rsquo;article est fait, clic ici.<\/a><\/em><\/strong><\/li>\n<li>Pour terminer, il faut aussi que je fasse un article pour montrer comment \u00ab\u00a0variabiliser\u00a0\u00bb les donn\u00e9es saisies dans les formulaires Web, histoire que le robot ne fasse pas la m\u00eame transaction \u00e0 chaque appel du sc\u00e9nario. <strong><em>MAJ: <a href=\"http:\/\/blog.milamberspace.net\/index.php\/jmeter-variabilisation-de-donnees\">l&rsquo;article est fait, clic ici<\/a><\/em><\/strong><\/li>\n<li>Ah! et il faut aussi que je vous parle des \u00ab\u00a0think time\u00a0\u00bb dans un article (<strong><em>MAJ<\/em><\/strong> : <a href=\"http:\/\/blog.milamberspace.net\/index.php\/2009\/02\/08\/jmeter-think-time-et-ordre-dexecution-les-bons-plans-212.html\">Ici par exemple<\/a>)&#8230; Il y a en effet une grande diff\u00e9rence entre le comportement d&rsquo;un \u00eatre humain et un robot. Ce dernier ex\u00e9cute les requ\u00eates les unes \u00e0 la suite des autres sans d\u00e9lai, alors que nous (pauvres humains) mettons quelques ms\/secs\/min pour faire une action sur notre navigateur.<\/li>\n<li>Bon je m&rsquo;arr\u00eate l\u00e0. J&rsquo;ai <a href=\"http:\/\/blog.milamberspace.net\/index.php\/jmeter-pages\">beaucoup de choses \u00e0 dire sur JMeter<\/a>, mais \u00e0 chaque jour suffit sa peine \ud83d\ude09<\/li>\n<\/ul>\n<p>.\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>JMeter : Ex\u00e9cuter son sc\u00e9nario de tir de charge Le sc\u00e9nario fonctionnel est donc dans JMeter, nous y avons apport\u00e9 des affinages, et \u00e9galement personnalis\u00e9 les tests d&rsquo;assertion de chaque requ\u00eate. Pour finir, nous avons contr\u00f4l\u00e9 que l&rsquo;ex\u00e9cution d&rsquo;une passe (1 utilisateur virtuel qui ex\u00e9cute 1 fois le sc\u00e9nario) se d\u00e9roule correctement. Il nous reste &hellip; <a href=\"https:\/\/blog.milamberspace.net\/index.php\/jmeter-pages\/jmeter-test-de-charges-dun-site-web-mode-demploi\/executer-son-scenario-de-tir-de-charges\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Ex\u00e9cuter son sc\u00e9nario de tir de charge<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":34,"menu_order":4,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-36","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/pages\/36","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/comments?post=36"}],"version-history":[{"count":9,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/pages\/36\/revisions"}],"predecessor-version":[{"id":1219,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/pages\/36\/revisions\/1219"}],"up":[{"embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/pages\/34"}],"wp:attachment":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/media?parent=36"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}