<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MilamberSpace - JMeter &#187; Performance</title>
	<atom:link href="http://blog.milamberspace.net/index.php/tag/performance/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.milamberspace.net</link>
	<description>Apache JMeter (surtout) mais aussi GNU/Linux, OpenSource, l&#039;Informatique, etc.</description>
	<lastBuildDate>Sun, 05 Feb 2012 09:51:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Tomcat ou Jboss, enregistrer le temps de traitement des requêtes HTTP</title>
		<link>http://blog.milamberspace.net/index.php/2010/03/01/tomcat-ou-jboss-enregistrer-le-temps-de-traitement-des-requetes-http-616.html</link>
		<comments>http://blog.milamberspace.net/index.php/2010/03/01/tomcat-ou-jboss-enregistrer-le-temps-de-traitement-des-requetes-http-616.html#comments</comments>
		<pubDate>Mon, 01 Mar 2010 22:27:46 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Jboss]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[temps de traitement]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=616</guid>
		<description><![CDATA[Avec Tomcat ou Jboss, il est possible d&#8217;enregistrer le temps de traitement d&#8217;une requête HTTP. Il y a en effet une valve AccessLogValve (désactivée par défaut) qui trace les accès (requêtes) HTTP qui sont effectués sur le serveur. Avec une petite modification du format du log, on peut ajouter l&#8217;enregistrement du temps de traitement coté [...]]]></description>
			<content:encoded><![CDATA[<p>Avec Tomcat ou Jboss, il est possible d&#8217;enregistrer le temps de traitement d&#8217;une requête HTTP. Il y a en effet une valve AccessLogValve <em>(désactivée par défaut)</em> qui trace les accès (requêtes) HTTP qui sont effectués sur le serveur. Avec une petite modification du format du log, on peut ajouter l&#8217;enregistrement du temps de traitement coté Tomcat ou Jboss de la requête.</p>
<p>Ceci est particulièrement utile pour décorréler le temps de traitement par rapport au temps de réponse enregistré dans un outil de test de charge, comme JMeter.</p>
<p>Voici comme faire dans Tomcat :</p>
<p>Au niveau du fichier<em> Tomcat_Home/conf/server.xml</em>, on trouve la section suivante en commentaires :</p>
<pre>&lt;!--
&lt;Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/&gt;
---&gt;</pre>
<p><span id="more-616"></span>Il faut d&#8217;abord la décommenter, puis modifier l&#8217;attribut <strong>pattern</strong> comme suit :</p>
<pre>&lt;Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
<strong>pattern='%h %l %u %t "%r" %s %b %D'</strong>
pattern="common" resolveHosts="false"/&gt;</pre>
<p>Le %D correspondra au temps de traitement de la requête en millisecondes.</p>
<p>Pour Jboss qui, (je le rappelle) contient un serveur Tomcat (plus exactement un dérivé appelé Jboss Web), c&#8217;est la même valve que l&#8217;on retrouve.</p>
<p>Cette fois-ci, il faut aller dans le dossier <em>Jboss_Home/server/&lt;default|nom instance&gt;/deploy/jboss-web.deploy/server.xml</em>, puis procéder au même type de changement sur l&#8217;attribut pattern :</p>
<pre>&lt;!-- Access logger --&gt;
&lt;Valve className="org.apache.catalina.valves.AccessLogValve"
prefix="localhost_access_log." suffix=".log"
pattern='%h %l %u %t "%r" %s %b %D'
directory="${jboss.server.log.dir}" resolveHosts="false" /&gt;</pre>
<p>Bien entendu, dans les deux cas, il faut redémarrer le serveur pour la prise en compte.</p>
<p>Ensuite dans le fichier localhost_access_log.&lt;date&gt;.log, on aura des lignes de ce type :</p>
<pre>123.45.67.89 - - [01/Mar/2010:00:05:39 +0000] "POST /App1/Modification.action HTTP/1.1" 200 24039 458</pre>
<p><em>où</em> le 458 à la fin correspond au temps de traitement exprimé en millisecondes.</p>
<p>On notera qu&#8217;il est possible de changer <em>(ou d&#8217;ajouter)</em> le %D en %T pour avoir le temps de traitement en secondes plutôt que millisecondes.</p>
<p>Plus d&#8217;infos sur la valve et les formats possibles <a href="http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html">ici</a>.</p>
<p><span style="text-decoration: underline;"><em>PS.</em></span> Bien entendu, Apache ou IBM HTTP Server propose la même fonctionnalité. Il peut même être très intéressant de l&#8217;activer à son niveau dans le cas d&#8217;une architecture de type Apache+mod_jk+Tomcat.</p>
<p>./</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2010/03/01/tomcat-ou-jboss-enregistrer-le-temps-de-traitement-des-requetes-http-616.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bilan année 2008</title>
		<link>http://blog.milamberspace.net/index.php/2008/12/29/bilan-annee-2008-120.html</link>
		<comments>http://blog.milamberspace.net/index.php/2008/12/29/bilan-annee-2008-120.html#comments</comments>
		<pubDate>Mon, 29 Dec 2008 21:21:31 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Bureautique]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Navigateur]]></category>
		<category><![CDATA[Open source]]></category>
		<category><![CDATA[OpenOffice]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[2008]]></category>
		<category><![CDATA[Bilan]]></category>
		<category><![CDATA[Virtualisation]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=120</guid>
		<description><![CDATA[En fin d&#8217;année, il est de coutume de faire le bilan. Je vous propose donc de partager différents points de vue « bilan de fin d&#8217;année », le tout étant totalement subjectif, non-exhaustif et basé sur mon seul vécu. Windows Vista Windows Vista est un (le ?) fiasco incroyable de cette année, sans entrer dans [...]]]></description>
			<content:encoded><![CDATA[<p style="">En fin d&#8217;année, il est de coutume de faire le bilan. Je vous propose donc de partager différents points de vue « bilan de fin d&#8217;année », le tout étant totalement subjectif, non-exhaustif et basé sur mon seul vécu.<span id="more-120"></span><span style="text-decoration: underline;"><strong></strong></span></p>
<p style=""><span style="text-decoration: underline;"><strong>Windows Vista</strong></span></p>
<p style="">Windows Vista est un (le ?) fiasco incroyable de cette année, sans entrer dans les détails techniques, je dirais simplement que je n&#8217;ai personne dans mes différents &laquo;&nbsp;paysages&nbsp;&raquo; : famille, collègues ou clients qui utilisent Vista (certains l&#8217;on testé sans le garder).</p>
<ul>
<li>Pour le paysage famille, c&#8217;est lié au fait qu&#8217;il n&#8217;y a pas eu de renouvellement de machines (pourquoi upgrader vers Vista sur sa machine courante ?) ou bien qu&#8217;ils sont sous Linux (ma filleule de 10 ans en l&#8217;occurrence).</li>
<li>Pour le paysage collègues, c&#8217;est lié au fait que les nouvelles machines acquises sont sous Windows XP (licence Downgrade XP), et que cela ne dérange personne (plutôt le contraire).</li>
<li>Pour le paysage clients, c&#8217;est lié également à la livraison de machines avec Windows XP, et aussi à la politique globale des DSI de conserver Windows XP.</li>
</ul>
<p style="">J&#8217;ai même parfois suscité de l&#8217;intéressement de la part de collègues ou de clients avec mon ordinateur utilisant non pas Windows mais Linux / Ubuntu. Intéressement allant même jusqu&#8217;à l&#8217;installation pour certains, en espérant qu&#8217;ils continuent&#8230;</p>
<p style=""><span style="text-decoration: underline;"><strong>Virtualisation</strong></span></p>
<p style="">La virtualisation est devenue pour moi (personnellement) très présente en 2008, tant sur mon ordinateur de travail quotidien (avec VirtualBox) pour :</p>
<ul>
<li>avoir Windows XP (Home Edition) pour ouvrir certains documents Microsoft et utiliser Adobe Lightroom pour mes photos</li>
<li>avoir différents environnements de tests (bien souvent des Linux (Centos, Ubuntu ou RedHat))</li>
<li>pour faire des démonstrations en donnant une formation (WebSphere Administration)</li>
</ul>
<p style="">Que sur mes machines/serveurs &#8216;physiques&#8217; de tests pour :</p>
<ul>
<li>tester Liferay (VMWare / Centos)</li>
<li>mettre en place un cluster Alfresco sur Jboss (VMWare / Centos)</li>
<li>avoir une machine DVL (VirtualBox / DawnLinuxVulnerable) pour effectuer des tests de sécurité</li>
<li>tester la mise en cluster de CAS (VMWare / Central Authentification Service)</li>
<li>etc.</li>
</ul>
<p style="">Je n&#8217;ai pas fini d&#8217;utiliser la virtualisation. Tant mieux, d&#8217;autant que les clients commencent à y réfléchir très sérieusement, non pas pour faire des petits environnements de tests comme moi, mais plutôt pour avoir des desktops virtualisés et/ou des environnements serveurs virtualisés. Vmware ESX et le futur oVirt de RedHat vont certainement faire partir des choses à connaître en 2009.</p>
<p style=""><span style="text-decoration: underline;"><strong>Les performances applicatives, les tests de charges</strong></span></p>
<p style="">Dans mon paysage client, tous ont des objectifs de performances pour les nouvelles applications qu&#8217;ils lancent. <em>Signe d&#8217;une nouvelle maturité ?</em> Oui et non. Certains ont vécus des soucis sur des applicatifs lancés qui se sont révélés peu performants et qui ont nécessité des diagnostics, des corrections et des optimisations à faire dans l&#8217;urgence (et souvent sous pression), d&#8217;autres n&#8217;ont pas envie tout simplement de vivre cela, et incluent le test de performance (de charges) en bout de chaîne avant la mise en production.<br />
Là pour 2009, il va falloir éviter de mettre des &laquo;&nbsp;couches supplémentaires&nbsp;&raquo; pour palier aux problèmes, mais plutôt inclure la notion de performance et optimisation directement auprès du développeur. Ceci permettant d&#8217;avoir des applications avec de la performance en &laquo;&nbsp;natif&nbsp;&raquo;. Il y a bien des formations pour le développement orientées sécurité, pourquoi pas des formations orientées optimisation&#8230;</p>
<p style=""><span style="text-decoration: underline;"><strong>La sécurité applicative</strong></span></p>
<p style="">Pour parler un peu de la sécurité applicative en 2008, je dirais : &laquo;&nbsp;encore inconnue&nbsp;&raquo; dans la réalité, bien qu&#8217;on en parle et que l&#8217;on aimerait bien l&#8217;avoir dans ses applicatifs, mais pour l&#8217;instant on n&#8217;a pas le temps de s&#8217;en occuper&#8230; (je dirais) De toutes les façons, les cabinets d&#8217;audit de sécurité vont nous dire quelles sont les failles que nous avons&#8230;</p>
<p style=""><strong><span style="text-decoration: underline;">Les applications Web</span></strong><br />
On parle du Web 2.0 (et même d&#8217;Entreprise 2.0), des nouvelles façons d&#8217;utiliser l&#8217;outil Internet. Aujourd&#8217;hui (et ici au Maroc), les applications Web sont de &laquo;&nbsp;véritables applications&nbsp;&raquo;. C&#8217;est-à-dire qu&#8217;elles fournissent un lot de fonctionnalités important (on s&#8217;en doute), de la convivialité (ajax/flex merci), et tout, et tout. Cependant on notera la tendance des clients à demander des interfaces (écrans) qui remplissent complètement la largeur de l&#8217;écran de la machine. En gros avoir des applications qui profitent des espaces blancs habituels à gauche et à droite sur les cotés du navigateur<em> (regarder sur ce blog <img src='http://blog.milamberspace.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> )</em>. Je pense que cela provient 1/ du fait que les écrans de machines (notamment les portables) sont devenus très larges, et 2/ des interfaces de type Gmail/Google qui sont extensibles.</p>
<p style="">On dit souvent que le navigateur est devenu le « nouveau » système d&#8217;exploitation, c&#8217;est à dire que finalement l&#8217;utilisateur ne voit plus que la dernière couche de ses applications. La tendance des « applications à écrans larges » est juste dans la continuité des choses.</p>
<p style=""><strong><span style="text-decoration: underline;">OpenOffice(.org)</span></strong></p>
<p style="">L&#8217;intérêt d&#8217;OpenOffice, sans forcément donner lieu à des passages vers OpenOffice, est grandissant. Mes interlocuteurs connaissent cette suite bureautique, et ont envie de savoir si c&#8217;est &laquo;&nbsp;compatible&nbsp;&raquo; avec la suite Microsoft Office, d&#8217;autant que parfois le passage à Office 2007 n&#8217;a pas toujours été bien vécu (pour mes interlocuteurs professionnels). Quant à mon entourage familial, je pratique la conversion à OpenOffice (sous Windows ou Linux) avec une petite formation à l&#8217;appui plutôt que leur installer une suite MS Office (je rappelle aussi que c&#8217;est payant : en France, ~99 euros pour Office 2007 en pack Etudiant / Famille !). Ensuite on ne me demande plus d&#8217;avoir MS Office&#8230;</p>
<p style="">On ajoutera que Microsoft dans le SP2 d&#8217;Office 2007 va permettre de lire des fichiers OpenOffice, ce qui viendra ajouter à la compatibilité bi-directionnelle des formats bureautiques.</p>
<p style=""><strong><span style="text-decoration: underline;">SPAM</span></strong></p>
<p style="">Le SPAM, bien que toujours (et même extrêmement) présents sur les &#8216;câbles&#8217; Internet, n&#8217;est plus l&#8217;ennui récurent qu&#8217;il était. En effet, les filtres anti-spams tant du côté des serveurs de messageries que du coté des postes clients (outlook, thunderbird) sont devenus performants, à tels points que je n&#8217;ai que très épisodiquement un mail de spam sur mes différentes boîtes aux lettres. Merci.</p>
<p style=""><strong><span style="text-decoration: underline;">Ubuntu</span></strong></p>
<p style="">Sans dire qu&#8217;il s&#8217;agit de la meilleure distribution pour poste de travail, son petit coté « si il existe des drivers non-opensource pour un périphérique, alors on le distribue aussi » est bien pratique par rapport à d&#8217;autres distributions. Toujours est-il que je suis très satisfait d&#8217;avoir un poste de travail Linux / Ubuntu qui fonctionne bien, rapide, stable et qui sait profiter de mes 4 Go de mémoire (le coté 64 bits).</p>
<p style="">La future release de Ubuntu (9.04 Jaunty Jackalope, prévue le 23 avril 2009) s&#8217;annonce exceptionnelle avec OpenOffice 3, Xorg 1.6, le dernier noyau Linux 2.6.28, Firefox 3.1, Thunderbird 3, etc&#8230; (on en reparlera&#8230;)</p>
<p style="">Je finis ce bilan, par quelques notes :</p>
<ol>
<li>Le blog n&#8217;a pas été toujours facile à maintenir à jour cette année, bon gré, mal gré, des événements et actualités professionnelles et personnelles. Mais cela reste très gratifiant à tous les points de vue.</li>
<li>JMeter fait son petit bout de chemin, les billets relatifs à ce sujet ont leurs visites qui augmentent de mois en mois. Peut-être est-ce dû au fait qu&#8217;il y a peu de documentation francophone sur JMeter (ce blog est assez bien placé sur google.fr avec le mot-clé Jmeter du coup). Le groupe &laquo;&nbsp;JMeter en français&nbsp;&raquo; n&#8217;est pas un groupe très actif, mais se réveille de temps en temps pour soulever des points souvent très intéressants.</li>
</ol>
<p style="">Pour conclure, une bonne année 2008 d&#8217;un point de vue informatique pour moi. Les choses bougent, Linux est vraiment bien en tant que desktop.</p>
<p style="">
<p style=""><em>J&#8217;en profite pour vous souhaiter une excellente année 1430 (calendrier musulman, car aujourd&#8217;hui c&#8217;est le 1er Moharem) et une excellente année 2009 (calendrier grégorien/international) !</em></p>
<p style="">
<p style="">./</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2008/12/29/bilan-annee-2008-120.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Livre eBook Performance Testing  Guidance for Web  Applications par Microsoft (en anglais)</title>
		<link>http://blog.milamberspace.net/index.php/2008/08/01/livre-ebook-performance-testing-guidance-for-web-applications-par-microsoft-en-anglais-86.html</link>
		<comments>http://blog.milamberspace.net/index.php/2008/08/01/livre-ebook-performance-testing-guidance-for-web-applications-par-microsoft-en-anglais-86.html#comments</comments>
		<pubDate>Fri, 01 Aug 2008 16:04:04 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Tests de charges]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[Méthodologie]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=86</guid>
		<description><![CDATA[Voici un très bon ebook en anglais, il s&#8217;agit d&#8217;un guide sur les tests de performances, proposé en téléchargement et gratuitement par Microsoft via son site CodePlex. (titre en anglais : Performance Testing Guidance for Web Applications) C&#8217;est un livre de 221 pages, découpé en 8 parties (pour un total de 18 chapitres) : Une [...]]]></description>
			<content:encoded><![CDATA[<p style="">Voici un très bon ebook en anglais, il s&#8217;agit d&#8217;un<a href="http://www.codeplex.com/PerfTestingGuide" target="_blank"> guide sur les tests de performances</a>, proposé en téléchargement et gratuitement par Microsoft via son site CodePlex.</p>
<p style=""><em>(titre en anglais : Performance Testing  Guidance for Web  Applications)</em></p>
<p style="">C&#8217;est un <a href="http://www.codeplex.com/PerfTestingGuide" target="_blank">livre</a> de 221 pages, découpé en 8 parties (pour un total de 18 chapitres) :</p>
<ol>
<li>Une introduction aux tests de performances, qui vous donnera un aperçu des différents types de tests de performances, les concepts clés et le vocabulaire utilisé.</li>
<li>Une approche modèle sur le test de performance, à travers 7 macro activités. Cette partie montre également comment intégrer les tests de performances dans les environnements Agile et CMMI.</li>
<li>Identification de l&#8217;environnement de test, qui montre comme collecter les informations nécessaires sur un projet à tester, allant des architectures systèmes au activités utilisateurs, etc.<span id="more-86"></span></li>
<li>L&#8217;identification des critères d&#8217;acceptance du tir de charges, qui permettent de déterminer les objectifs du tir.</li>
<li>La conception et la planification des tests, qui montrent comment modéliser la charge tout en prenant compte des retours des utilisateurs pour concevoir un test de performance adéquat.</li>
<li>L&#8217;exécution à proprement parlée, des tests des performances.</li>
<li>L&#8217;analyse des résultats du tir, et la génération du rapport, qui montrent comment organiser et présenter les données de façon faire passer l&#8217;information du rapport de manière efficace.</li>
<li>Pour finir, deux techniques de tests de performances pour une application Web, le tir de charges et le tir de stress.</li>
</ol>
<p style="">Comme on peut le voir il s&#8217;agit d&#8217;un programme complet et méthodologique sur les tests de performances.</p>
<p style="">Je ne vous donne le contenu détaillé du livre, mais on en a pour « son argent » d&#8217;autant qu&#8217;il est gratuit. On en tire des enseignements, de la méthodologie, du vocabulaire et une vision très professionnelle du test de performances.</p>
<p style="">En conclusion, je vous recommande sa lecture.</p>
<p style="">./</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2008/08/01/livre-ebook-performance-testing-guidance-for-web-applications-par-microsoft-en-anglais-86.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Compression HTTP, ou comment réduire le temps réseau dans les performances d&#8217;une application</title>
		<link>http://blog.milamberspace.net/index.php/2008/07/06/compression-http-ou-comment-reduire-le-temps-reseau-dans-les-performances-dune-application-80.html</link>
		<comments>http://blog.milamberspace.net/index.php/2008/07/06/compression-http-ou-comment-reduire-le-temps-reseau-dans-les-performances-dune-application-80.html#comments</comments>
		<pubDate>Sun, 06 Jul 2008 16:29:06 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTTPD]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Navigateur]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[mod_deflate]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=80</guid>
		<description><![CDATA[Avec JMeter on peut faire des tirs de performances (et d&#8217;autres choses) pour une application Web. Pour qu&#8217;une application soit performante, il est préférable qu&#8217;elle soit développée judicieusement, mais également qu&#8217;elle s&#8217;exécute sur un environnement performant. Dans ce dernier, il ne faut pas négliger la composante réseau qui peut souvent devenir un goulet d&#8217;étranglement au [...]]]></description>
			<content:encoded><![CDATA[<p style="">Avec JMeter on peut faire des tirs de performances (et d&#8217;autres choses) pour une application Web. Pour qu&#8217;une application soit performante, il est préférable qu&#8217;elle soit développée judicieusement, mais également qu&#8217;elle s&#8217;exécute sur un environnement performant. Dans ce dernier, il ne faut pas négliger la composante réseau qui peut souvent devenir un goulet d&#8217;étranglement au niveau de l&#8217;utilisateur.</p>
<p style="">En effet, vous allez développer une application hyper véloce, la faire fonctionner sur des serveurs hyper-rapides, mais votre utilisateur au bout de la ligne vous dit que c&#8217;est lent&#8230;</p>
<p style="">Vous (re)faites vos tir de charges, vous mesurez les performances, c&#8217;est excellent&#8230; sur votre réseau local. Vous placez un injecteur chez votre utilisateur final, et là c&#8217;est la surprise&#8230; c&#8217;est lent.</p>
<p style="">Le diagnostic est rapide : trop d&#8217;octets à transférer pour afficher un écran, avec une bande passante trop petite donc lenteurs. Et impossible d&#8217;augmenter la bande passante. Que faire ?<span id="more-80"></span></p>
<p style="">Bien entendu, il est possible (et il faut) optimiser ses pages HTML / XML, le taux de compression des images, etc. de son application. Tout ceci dans l&#8217;objectif de réduire le poids général en octets d&#8217;un écran.</p>
<p style="">Il y a aussi une astuce tout simple. La compression des données transitant entre le serveur Web et l&#8217;utilisateur final à travers la compression HTTP.</p>
<p style="">Cette compression basée sur l&#8217;algorithme des fichiers ZIP, est effectuée au niveau du serveur Web qui compresse à la volée les données à transmettre. Ensuite la décompression est assurée du coté des navigateurs Web.</p>
<p style="">Pour que cela marche, il faut bien entendu un navigateur récent (au moins IE 4.0, Firefox 1.0, etc) mais c&#8217;est le cas de tout le monde. Pour le serveur Web, il lui aussi doit être relativement récent (au moins IIS 5.0, Apache 2.x, etc). Il y a ensuite une configuration à faire à son niveau pour activer la compression.</p>
<p style="">Pour Apache, par exemple, c&#8217;est le module mod_deflate (et aussi mod_gzip) qui assure cette fonction. On peut ainsi ajouter dans son virtual host, les lignes suivantes (tirées que la documentation Apache) pour compresser tous les flux sauf les images.</p>
<pre># Insert filter</pre>
<pre>SetOutputFilter DEFLATE</pre>
<pre># Netscape 4.x has some problems...</pre>
<pre>BrowserMatch ^Mozilla/4 gzip-only-text/html</pre>
<pre># Netscape 4.06-4.08 have some more problems</pre>
<pre>BrowserMatch ^Mozilla/4\.0[678] no-gzip</pre>
<pre># MSIE masquerades as Netscape, but it is fine</pre>
<pre>BrowserMatch \bMSIE !no-gzip !gzip-only-text/html</pre>
<pre># Don't compress images</pre>
<pre>SetEnvIfNoCase Request_URI \</pre>
<pre>\.(?:gif|jpe?g|png)$ no-gzip dont-vary</pre>
<p style="">Après le redémarrage du serveur Apache, le résultat donne, par exemple, pour la page d&#8217;accueil de ce blog (juste le contenu HTML) :</p>
<ul>
<li>Avant, sans compression : 50 198 octets transférés</li>
<li>Après, avec compression : 11 903 octets transférés</li>
</ul>
<p style="">Soit une diminution de 38 ko (-76%) à transférer sur le réseau ! C&#8217;est pas mal comme optimisation ? Et en plus c&#8217;est transparent pour tout le monde.</p>
<p style="">Ainsi, avec l&#8217;activation de la compression, les bons temps de réponses de son application ne seront pas masqués par les temps de transferts réseaux importants, et l&#8217;utilisateur au bout trouvera l&#8217;application rapide.</p>
<p style=""><strong>[Quelques pointeurs]</strong></p>
<ul>
<li><a title="Apache mod_deflate" href="http://httpd.apache.org/docs/2.2/mod/mod_deflate.html" target="_blank">Apache &#8211; module mod_deflate</a></li>
<li><a href="http://en.wikipedia.org/wiki/HTTP_compression" target="_blank">Wiki : la compression HTTP</a></li>
<li><a href="http://www.http-compression.com/" target="_blank">La compression HTTP par son inventeur</a></li>
</ul>
<p style="">./</p>
<p style="">
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2008/07/06/compression-http-ou-comment-reduire-le-temps-reseau-dans-les-performances-dune-application-80.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Redbooks : Linux Performance and Tuning Guidelines</title>
		<link>http://blog.milamberspace.net/index.php/2008/05/01/redbooks-linux-performance-and-tuning-guidelines-74.html</link>
		<comments>http://blog.milamberspace.net/index.php/2008/05/01/redbooks-linux-performance-and-tuning-guidelines-74.html#comments</comments>
		<pubDate>Thu, 01 May 2008 18:58:39 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Supervision]]></category>
		<category><![CDATA[Tuning]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/index.php/2008/05/01/redbooks-linux-performance-and-tuning-guidelines-74.html</guid>
		<description><![CDATA[Linux ayant une place importante dans mon utilisation informatique, il est bien normal d&#8217;être à l&#8217;affût de bons documents dessus. IBM via son site de publications Redbooks nous propose un excellent document sur les performances et l&#8217;optimisation de Linux (il s&#8217;agit en réalité d&#8217;une mise à jour d&#8217;un document déjà sorti en juillet 2007). Redbooks [...]]]></description>
			<content:encoded><![CDATA[<p>Linux ayant une place importante dans mon utilisation informatique, il est bien normal d&#8217;être à l&#8217;affût de bons documents dessus. IBM via son site de publications Redbooks nous propose un excellent document sur les performances et l&#8217;optimisation de Linux <em>(il s&#8217;agit en réalité d&#8217;une mise à jour d&#8217;un document déjà sorti en juillet 2007)</em>.</p>
<p><a href="http://www.redbooks.ibm.com/redpapers/abstracts/redp4285.html?Open" title="Linux Performance and Tuning Guidelines" target="_blank">Redbooks : Linux Performance and Tuning Guidelines</a></p>
<p>Ce livre nous propose ainsi une large introduction au fonctionnement interne de Linux au niveau de la gestion des processus, les architectures mémoire (en particulier les différences entre systèmes 32 bits et 64 bits), les systèmes de fichiers (ext3, ext2, etc.), la gestion des entrées / sorties et la gestion du réseaux. C&#8217;est extrémement instructif.</p>
<p>La suite est un panorama des outils disponibles sur les distributions Linux pour la supervision et le benchmark. Chaque outil est expliqué, en particulier l&#8217;interprétation des données affichées.</p>
<p>Les deux derniers chapitres nous montrent d&#8217;une part les méthodes d&#8217;identifications des goulots d&#8217;étranglements (bootlenecks) au niveau CPU, mémoire, disques et réseaux. Et d&#8217;autre part des techniques d&#8217;optimisation de sa machine Linux (orienté serveur).</p>
<p>Pour résumé, ce document doit être une référence pour tout bon administrateur système qui s&#8217;occupe de serveurs Linux ou tout personne soucieuse (comme moi) des performances des bécanes !</p>
<p>Bon lecture.<br />
./</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2008/05/01/redbooks-linux-performance-and-tuning-guidelines-74.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tir de charges : Quand les problèmes ne viennent pas du serveur d&#8217;applications</title>
		<link>http://blog.milamberspace.net/index.php/2007/12/21/tir-de-charges-quand-les-problemes-ne-viennent-pas-du-serveur-dapplications-56.html</link>
		<comments>http://blog.milamberspace.net/index.php/2007/12/21/tir-de-charges-quand-les-problemes-ne-viennent-pas-du-serveur-dapplications-56.html#comments</comments>
		<pubDate>Fri, 21 Dec 2007 00:27:58 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Supervision]]></category>
		<category><![CDATA[Tests de charges]]></category>
		<category><![CDATA[Tir de charges]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/index.php/2007/12/21/tir-de-charges-quand-les-problemes-ne-viennent-pas-du-serveur-dapplications-56.html</guid>
		<description><![CDATA[Pour les « grands » tirs de charges dont l&#8217;objectif est de tester une nouvelle application J2EE (ou JEE) avant sa mise en production, et afin d&#8217;éviter les crashs le jour du lancement, on mobilise en général une équipe des différents « corps de métier » informatiques. On aura ainsi : les « tireurs » [...]]]></description>
			<content:encoded><![CDATA[<p>Pour les « grands » tirs de charges dont l&#8217;objectif est de tester une nouvelle application J2EE (ou JEE) avant sa mise en production, et afin d&#8217;éviter les crashs le jour du lancement, on mobilise en général une équipe des différents « corps de métier » informatiques.</p>
<p style="">On aura ainsi :</p>
<ul>
<li>les « tireurs » ceux qui vont faire le tir de charges avec un outil dédié,</li>
<li>les fonctionnels qui assistent les tireurs pour la scénarisation du tir,</li>
<li>les préparateurs de données qui sont chargés de fournir des données aux injecteurs pour le tir,</li>
<li>les gens du réseau pour la surveillance du trafic et de la bande passante,</li>
<li>les DBA pour la surveillance de l&#8217;activité de la base de données,</li>
<li>les superviseurs des serveurs d&#8217;applications pour monitorer l&#8217;activité de l&#8217;application,</li>
<li>l&#8217;équipe de développement de l&#8217;application qui croisent les doigts,</li>
<li>et bien sur les chefs du fonctionnel et les chefs de la technique</li>
</ul>
<p style="">Tout cela fait beaucoup de monde, on ajoutera en général un responsable général, chargé entre autre de synchroniser toutes les actions, et donner le GO du lancement.</p>
<p style="">Une fois que le tir lancé et terminé, l&#8217;expérience montre que c&#8217;est en général du coté du serveur d&#8217;applications J2EE que les problèmes sont visibles. Où s&#8217;ils ne sont pas visibles, on pense à lui en premier car c&#8217;est lui qui supporte l&#8217;application. Alors quand c&#8217;est vous le responsable de la supervision du cluster de serveurs d&#8217;applications, tout ce beau monde se retourne vers vous pour avoir l&#8217;explication, le comment du pourquoi, afin de comprendre la raison du non succès du tir de charge&#8230;</p>
<p style="">Pourtant vous avez fait une configuration des serveurs d&#8217;applications clustérisés <em>aux petits oignons</em> :</p>
<ul>
<li>configuration de la taille minimum et maximum idéale pour ce type d&#8217;application</li>
<li>modification des paramètres de JVM pour avoir notamment un fonctionnement du Garbage Collector en (quasi) parallèle (Concurrent Mark Sweep)</li>
<li>réglage des unités d&#8217;exécution min et max, temps d&#8217;inactivité</li>
<li>réglage du pool de connexions à la base de données, avec activation du cache des requêtes SQL préparées</li>
<li>réglage du gestionnaire de sessions</li>
<li>activation du monitoring,</li>
<li>et d&#8217;autres petits réglages <em>de derrière les fagots</em> : taille des files d&#8217;attente TCP, nombre des requêtes keep-alive, etc</li>
</ul>
<p style="">Alors avec ce tunning <em>de folie</em>, difficile de comprendre pourquoi le serveur d&#8217;applications souffre lors du tir de charges&#8230;<span id="more-56"></span></p>
<p style="">Voici quelques cas, dont le problème est visible sur le serveur d&#8217;applications, mais l&#8217;origine est ailleurs :</p>
<p style="">1/ le serveur d&#8217;applications explose en OutOfMemory&#8230; C&#8217;est en général de la faute à l&#8217;application développée ou de l&#8217;utilisation du framework de persistence (genre Hibernate). Un exemple, c&#8217;est le chargement de plusieurs fois un million d&#8217;enregistrement dans la mémoire (car plusieurs centaines d&#8217;utilisateurs simulés et non plus les quelques développeurs et testeurs de la recette). On aura ainsi par exemple, 100 fois 10 Mo dans la mémoire soit au moins 1Go, donc des OutOfMemory si la taille maximum de la mémoire JVM est à 1024 Mo.</p>
<p style="">2/ le nombre maximal des unités d&#8217;exécution est atteint. C&#8217;est en général de la faute de l&#8217;application développée ou bien de la base de données. En effet si le nombre max est atteint, mais que la CPU du serveur n&#8217;est pas utilisée, on peut en déduire que les unités d&#8217;exécution sont en attente de quelque chose&#8230; Et souvent c&#8217;est de résultat de la base de données. Soit cette dernière est surchargée, soit il manque quelques index quelque part ou tout simplement il faut régénérer les statistiques de la base de données.</p>
<p style="">3/ Tout va bien sur le serveur d&#8217;application, sur la base de données, etc, mais l&#8217;application est « lente » à la réponse. Et bien là on peut se poser la question du réseau. Il convient de s&#8217;assurer que toutes les cartes réseaux soient configurées en 100 Mbits/s Full Duplex (ou en gigabit), que les switchs d&#8217;interconnexion également (port par port), et les routeurs si il y a lieu. Le mieux est de faire un test FTP (via un client classique vers le serveur, ou via JMeter). En effet, on verra que si l&#8217;une des interfaces est en 10 Mbits/s half duplex, par exemple celle du répartiteur de charges, et l&#8217;ensemble des serveurs derrière ne seront pas surchargés, mais l&#8217;application sera désespérément lente (goulot d&#8217;étranglement sur le lien réseau). (pour l&#8217;histoire, une interface réseau peut basculer en 10 Mbits/s HD tout simplement car l&#8217;auto négociation de vitesse avec le switch a échoué, et ainsi la carte prend la valeur la plus basse&#8230;</p>
<p style="">4/ Les pages de l&#8217;application affichent des erreurs 500&#8230; c&#8217;est en général un problème applicatif engendré par un problème externe. Par exemple l&#8217;atteinte du nombre maximum autorisé de fichiers ouverts pour un processus, ou bien la base de données n&#8217;accepte plus de nouvelles connexions&#8230;</p>
<p style="">Par ailleurs, on peut aussi avoir un cumul de ces problèmes, et chaque tir de charges montrent un nouveau problème&#8230;</p>
<p style="">Mais quand tout est bien réglé, c&#8217;est à dire que l&#8217;ensemble des composants de la solution est bien paramétré, avec de la logique, et bien le tir de charges se passe à merveille !</p>
<p style=""> ./</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2007/12/21/tir-de-charges-quand-les-problemes-ne-viennent-pas-du-serveur-dapplications-56.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

