{"id":192,"date":"2009-02-01T09:55:32","date_gmt":"2009-02-01T09:55:32","guid":{"rendered":"http:\/\/blog.milamberspace.net\/?p=192"},"modified":"2009-07-11T22:06:36","modified_gmt":"2009-07-11T21:06:36","slug":"jmeter-pourquoi-executer-son-test-de-charges-en-mode-non-gui-sans-interface-graphique","status":"publish","type":"post","link":"https:\/\/blog.milamberspace.net\/index.php\/2009\/02\/01\/jmeter-pourquoi-executer-son-test-de-charges-en-mode-non-gui-sans-interface-graphique-192.html","title":{"rendered":"JMeter : Pourquoi ex\u00e9cuter son test de charges en mode non-gui (sans interface graphique) ?"},"content":{"rendered":"<p style=\"\">JMeter dispose de deux modes de fonctionnement, un mode GUI et un non-GUI, \u00ab GUI \u00bb signifiant<em> Graphical User Interface<\/em>, c&rsquo;est-\u00e0-dire un mode de fonctionnement avec une interface graphique utilisateur qui permet de cr\u00e9er, \u00e9diter un script et lancer un test de charges et autres choses. Le mode non-GUI ne permet pas de manipuler un script, mais simplement de lancer le script de test de charges.<\/p>\n<p style=\"\">Pourquoi ce mode non-GUI ? Parce qu&rsquo;en mode GUI, JMeter peut \u00eatre g\u00ean\u00e9 par la gestion du &lsquo;<em>graphisme<\/em>&lsquo; pendant qu&rsquo;il est en train d&rsquo;ex\u00e9cuter un test de charges. Et cela peut avoir un impact sur la qualit\u00e9 des r\u00e9sultats du tir.<\/p>\n<p style=\"\">En effet, sur le poste JMeter, la gestion du mode graphique impacte :<!--more--><\/p>\n<ul>\n<li><strong>Le processeur.<\/strong> JMeter doit traiter deux choses : le test de charges (envoi des requ\u00eates, r\u00e9ception des r\u00e9ponses, \u00e9ventuellement \u00e9criture dans un fichier, etc.) et l&rsquo;affichage des r\u00e9sultats dans les r\u00e9cepteurs (listeners) ainsi que d&rsquo;\u00e9ventuels calculs statistiques (total, moyenne, etc.). La puissance du processeur est donc d\u00e9coup\u00e9e en deux t\u00e2ches principales : la gestion du tir et la gestion de l&rsquo;affichage.<\/li>\n<li><strong>La m\u00e9moire.<\/strong> Certains r\u00e9cepteurs comme celui de l&rsquo;arbre de r\u00e9sultats ou celui de tableau de r\u00e9sultats, sont extr\u00eamement gourmands en m\u00e9moire, en effet, pour chaque test d&rsquo;\u00e9chantillon, il faut ajouter un petit &lsquo;<em>chouia<\/em>&lsquo; dans la m\u00e9moire. Or quand son test de charge g\u00e9n\u00e8re de tr\u00e8s nombreuses requ\u00eates, le petit <em>chouia<\/em> devient \u00e9norme, ce qui peut m\u00eame faire des OutOfMemoryError du c\u00f4t\u00e9 JMeter si on ne prends pas soin d&rsquo;augmenter la taille de m\u00e9moire maximale de la JVM de JMeter (au niveau du script de lancement).<\/li>\n<\/ul>\n<p style=\"\">Et pour couronner le tout, la machine virtuelle Java (qui je le rappelle, ex\u00e9cute JMeter), aura parfois besoin de faire passer le garbage collector (GC) pour la gestion de la m\u00e9moire, ce qui a un impact sur le traitement des r\u00e9sultats, le GC gelant les threads (donc le tir et le traitement des r\u00e9sultat) lors de l&rsquo;identification des objets \u00e0 supprimer de la m\u00e9moire.<\/p>\n<p style=\"\">Ces points montrent que le mode GUI est plut\u00f4t \u00e0 proscrire lors d&rsquo;un test de charge aussi simple soit-il, car on risque d&rsquo;avoir des r\u00e9sultats erron\u00e9s en termes de calcul de temps de r\u00e9ponses, par JMeter lui-m\u00eame, ce dernier est perturb\u00e9 par la gestion de l&rsquo;affichage des r\u00e9sultats de mani\u00e8re graphique, et par le fonctionnement de la JVM au niveau la gestion de la m\u00e9moire si le nombre de requ\u00eates\/r\u00e9ponses devient tr\u00e8s important.<\/p>\n<p style=\"\">Donc pour r\u00e9sum\u00e9, le mode GUI est plut\u00f4t \u00e0 utiliser pour cr\u00e9er et maintenir ses scripts JMeter et lancer des tir de charges \u00ab <em>blancs<\/em> \u00bb permettant de v\u00e9rifier la bonne ex\u00e9cution d&rsquo;un sc\u00e9nario. Le mode non-GUI est \u00e0 utiliser pour l&rsquo;ex\u00e9cution du test de charge \u00ab officiel \u00bb.<\/p>\n<p style=\"\">Un petit conseil pour finir : si vous avez une machine JMeter avec un processeur multi-core (dual core), il est pr\u00e9f\u00e9rable d&rsquo;utiliser une machine virtuelle Java derni\u00e8re version (6), car la gestion des processeurs (core) y est bien plus optimale que la version 5 (sans parler de la 1.4). Avec une JVM 6, JMeter et tous ses petits threads vont utiliser l&rsquo;ensemble des CPU disponibles sur le poste de test JMeter.<\/p>\n<p style=\"\">\n","protected":false},"excerpt":{"rendered":"<p>JMeter dispose de deux modes de fonctionnement, un mode GUI et un non-GUI, \u00ab GUI \u00bb signifiant Graphical User Interface, c&rsquo;est-\u00e0-dire un mode de fonctionnement avec une interface graphique utilisateur qui permet de cr\u00e9er, \u00e9diter un script et lancer un test de charges et autres choses. Le mode non-GUI ne permet pas de manipuler un &hellip; <a href=\"https:\/\/blog.milamberspace.net\/index.php\/2009\/02\/01\/jmeter-pourquoi-executer-son-test-de-charges-en-mode-non-gui-sans-interface-graphique-192.html\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">JMeter : Pourquoi ex\u00e9cuter son test de charges en mode non-gui (sans interface graphique) ?<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[32,17,33,36,34],"tags":[155,330,156],"class_list":["post-192","post","type-post","status-publish","format-standard","hentry","category-apache","category-java","category-jmeter","category-performance","category-tests-de-charges","tag-gui","tag-jmeter","tag-jvm"],"_links":{"self":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts\/192","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"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=192"}],"version-history":[{"count":5,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts\/192\/revisions"}],"predecessor-version":[{"id":392,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts\/192\/revisions\/392"}],"wp:attachment":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/media?parent=192"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/categories?post=192"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/tags?post=192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}