<?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>Blog Xebia France &#187; Performance</title>
	<atom:link href="http://blog.xebia.fr/tag/performance/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.xebia.fr</link>
	<description>J2EE, Agilité et SOA</description>
	<lastBuildDate>Thu, 09 Sep 2010 07:48:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Revue de Presse Xebia</title>
		<link>http://blog.xebia.fr/2010/06/29/revue-de-presse-xebia-165/</link>
		<comments>http://blog.xebia.fr/2010/06/29/revue-de-presse-xebia-165/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 05:50:07 +0000</pubDate>
		<dc:creator>Xebia France</dc:creator>
				<category><![CDATA[Revue de presse]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Gorm]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[MuleSoft]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[Tomcat Stats]]></category>

		<guid isPermaLink="false">http://blog.xebia.fr/?p=4971</guid>
		<description><![CDATA[
La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.
Outils

Helios, Eclipse 3.6

SOA

Tomcat Stats: administrer Tomcat depuis son iPhone

Le coin de la  technique

Articles sur Groovy/Spring et Grails/Hibernate
Un nouveau top 10 orienté performance

Agilité

Happy birthday Post-It !

Outils
Helios, Eclipse 3.6
Après avoir épuisé les principales lunes de Jupiter (Callisto, Europa, Ganymède, Galileo), voici venu le tour d&#8217;Helios pour [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /><br />
<em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p>
<p><strong>Outils</strong></p>
<ul>
<li><a href="http://blog.xebia.fr/2010/06/29/revue-de-presse-xebia-165/#HeliosEclipse">Helios, Eclipse 3.6</a></li>
</ul>
<p><strong>SOA</strong></p>
<ul>
<li><a href="http://blog.xebia.fr/2010/06/29/revue-de-presse-xebia-165/#SortiedeTomcatStatsladministra">Tomcat Stats: administrer Tomcat depuis son iPhone</a></li>
</ul>
<p><strong>Le coin de la  technique</strong></p>
<ul>
<li><a href="http://blog.xebia.fr/2010/06/29/revue-de-presse-xebia-165/#ArticlessurGroovySpringetGrail">Articles sur Groovy/Spring et Grails/Hibernate</a></li>
<li><a href="http://blog.xebia.fr/2010/06/29/revue-de-presse-xebia-165/#Unnouveautoporientperformance">Un nouveau top 10 orienté performance</a></li>
</ul>
<p><strong>Agilité</strong></p>
<ul>
<li><a href="http://blog.xebia.fr/2010/06/29/revue-de-presse-xebia-165/#HappybirthdayPostIt">Happy birthday Post-It !</a></li>
</ul>
<h3><a name="Outils"></a>Outils</h3>
<h4><a name="HeliosEclipse"></a>Helios, Eclipse 3.6</h4>
<p>Après avoir épuisé les principales lunes de Jupiter (Callisto, Europa, Ganymède, Galileo), voici venu le tour d&#8217;<a title="Helios" href="http://www.eclipse.org/">Helios</a> pour incarner la version annuelle d&#8217;Eclipse. Cette livraison ne contient pas moins de 39 projets de la fondation Eclipse et les supports pour Windows7, Ubuntu 10.04 et PowerPC 64 bit ont été ajoutés.</p>
<p>Pour ceux qui aiment ajouter une multitude de plugins à leur Eclipse, au lieu de passer par le &laquo;&nbsp;Install new software&#8230;&nbsp;&raquo;, un lien direct vers le Marketplace permet très facilement d&#8217;installer ces plugins, un peu à la manière d&#8217;un plugin Firefox (tout comme le redémarrage obligatoire). L&#8217;ancienne méthode marche toujours pour les applications qui ne se trouvent pas sur le Marketplace. Et sûrement que les fans de DVCS (Distributed Version Control System) vont se précipiter sur le plugin EGit/JGit pour gérer ses sources sous Git, JGit étant l&#8217;implémentation <em>full java</em> utilisée également sur d&#8217;autre projets alors qu&#8217;EGit est sa surcouche pour Eclipse. Le résultat est assez prometteur.</p>
<p>En ce qui concerne uniquement Java, quelques petites améliorations ont été apportées:</p>
<ul>
<li>Les options du <em>formatter</em> acceptent plus de sémantiques comme les annotations, la déclaration de méthodes ou la possibilité de désactiver le <em>formatter</em> d&#8217;une partie du code (intéressant pour aider des merges compliqués).</li>
<li>Les fonctionnalités sur le breakpoint, comme l&#8217;ajout d&#8217;une condition ou le compteur, sont à présent directement accessibles dans le panel <em>breakpoints</em> et non plus en passant par un menu contextuel dans le code.</li>
</ul>
<p>La version 3.7 devrait surtout se concentrer sur Java7. Ian Bull d&#8217;Eclipse propose un <a title="top ten" href="http://eclipsesource.com/blogs/2010/06/23/top-10-eclipse-helios-features/">top ten</a> intéressant pour faire le tour des fonctionnalités. Arrive en tête l&#8217;application Xtext qui permet d&#8217;écrire son propre DSL puis de générer à partir de celui-ci son propre éditeur Eclipse contenant la complétion et différents outils pour coder dans ce nouveau langage. Une affaire à suivre.</p>
<p>Mais malgré toutes les nouvelles fonctionnalités, Helios sera surtout scruté pour les multiples bugs corrigés, sa gourmandise en RAM et sa stabilité, ce que seule une pratique intensive pourra valider. Alors à vos souris !</p>
<h3><a name="SOA"></a>SOA</h3>
<h4><a name="SortiedeTomcatStatsladministra"></a>Tomcat Stats: administrer Tomcat depuis son iPhone</h4>
<p><a title="MuleSoft" href="http://www.mulesoft.com">MuleSoft</a>, plus connu pour son ESB Open Source <a title="Mule" href="http://www.mulesoft.com/mule-esb-open-source-esb">Mule</a>, a récemment annoncé la sortie de <a title="Tomcat Stats" href="http://www.mulesoft.com/mulesoft-introduces-iphone-app-apache-tomcat">Tomcat Stats</a>, la première application de monitoring Tomcat pour iPhone. Cette application gratuite vient enrichir l&#8217;<a title="offre de support" href="http://www.mulesoft.com/free-apache-tomcat-support">offre de support</a> également gratuite, proposée par MuleSoft depuis maintenant presque une année. L&#8217;application permet à un administrateur de gérer à distance plusieurs instances de Tomcat, qu&#8217;elles soient installées au sein de l&#8217;infrastructure propre de l&#8217;entreprise ou dans le Cloud. L&#8217;ensemble des informations critiques des serveurs administrés pourra alors être consulté depuis l&#8217;application, notamment l&#8217;utilisation mémoire, les statistiques sur le traffic Web, ainsi que le statut du serveur.</p>
<p>Pour télécharger l&#8217;application, rien de plus simple il suffit de se rendre sur l&#8217;App Store, directement depuis son mobile, ou sur iTunes à l&#8217;adresse suivante : <a title="Tomcat Stats By MuleSoft Inc" href="http://itunes.apple.com/us/app/tomcat-stats/id376646649?mt=8">Tomcat Stats By MuleSoft Inc.</a></p>
<p>Bien qu&#8217;un peu gadget, et pas vraiment indispensable, cette application iPhone offrira toujours aux administrateurs la possibilité de prolonger leur pause café sans avoir à culpabiliser.</p>
<h3><a name="Lecoindelatechnique"></a>Le coin de la  technique</h3>
<h4><a name="ArticlessurGroovySpringetGrail"></a>Articles sur Groovy/Spring et Grails/Hibernate</h4>
<p><a title="IBM developerWorks" href="http://www.ibm.com/developerworks/">IBM developerWorks</a> nous a récemment gratifié d&#8217;un  article en 2 parties intitulé &laquo;&nbsp;GroovierSpring&nbsp;&raquo;.  Dans <a title="la premire partie" href="http://www.ibm.com/developerworks/java/library/j-groovierspring1.html">la première partie</a>, nous  apprenons à définir des beans Spring en Groovy. Quatre méthodes  sont à notre disposition:</p>
<ul>
<li>Utilisation de classes Groovy compilées en .class normaux</li>
<li>Utilisation de classes Groovy directement sous forme de .groovy</li>
<li>Utilisation de  scripts Groovy en ligne,  écrits dans la configuration Spring</li>
<li>Utilisation  de <a title="Bean Builder" href="http://www.grails.org/Spring+Bean+Builder">Bean Builder</a> de Grails</li>
</ul>
<p>Cette  dernière possibilité permet de créer des beans dynamiquement, à  partir de code Groovy. Cela  sous entend que l&#8217;on peut, par le code, adapter les beans obtenus selon le contexte, les créer en utilisant des boucles, de la  logique&#8230; C&#8217;est d&#8217;ailleurs une solution utilisée dans Grails.</p>
<p>Une  fois les beans correctement  définis, nous pouvons les utiliser comme n&#8217;importe quel bean Java  défini plus classiquement. Le fait que les beans soient à  l&#8217;origine en Groovy est  complètement transparent à l&#8217;application.<br />
<a title="La seconde partie" href="http://www.ibm.com/developerworks/java/library/j-groovierspring2.html">La seconde partie</a> de l&#8217;article  va plus loin en explorant le rechargement à chaud des beans Groovy. C&#8217;est une plus-value  importante: qui n&#8217;a jamais rêvé de pouvoir changer facilement certains  bouts de code soumis aux désirs changeants des clients (ou à des bugs récurrents  !) ? De plus, l&#8217;article propose une implémentation permettant de  stocker son code Groovy en  base de donnée, car il n&#8217;est pas toujours évident d&#8217;accéder au système  de fichier des applications en production. C&#8217;est une idée assez peu  conventionnelle ! D&#8217;ailleurs, le paragraphe de fin, intitulé &laquo;&nbsp;When Groovy scripts go bad&nbsp;&raquo;,  constitue une mise en garde pour ne pas abuser de ces possibilités, et  être conscient des problèmes de sécurité soulevés.</p>
<p>Tant que nous  somme dans le monde de Groovy,  il nous semble intéressant de vous indiquer un article <a title="du blog de SpringSource" href="http://blog.springsource.com/2010/06/23/gorm-gotchas-part-1/">du blog de SpringSource</a> qui s&#8217;intitule &laquo;&nbsp;GORM Gotchas (Part 1)&nbsp;&raquo;. Il pointe du  doigt des comportements de GORM (la couche de  persistance de Grails basée sur Hibernate) pouvant sembler bizarres. Les habitués d&#8217;Hibernate n&#8217;apprendront pas grand choses, mais l&#8217;article éclairera sans doutes  ceux qui, attirés par la simplicité de Grails, se sont  mis à l&#8217;utiliser sans expérience préalable d&#8217;Hibernate. Ils comprendront ainsi pourquoi leurs objets ne sont pas toujours sauvegardés immédiatement malgré un appel à &laquo;&nbsp;save()&nbsp;&raquo;, et pourquoi ils le sont parfois en l&#8217;absence d&#8217;appel à cette même méthode. <a title="Un autre article" href="http://naleid.com/blog/2009/10/01/batch-import-performance-with-grails-and-mysql/">Un autre article</a> traitant de Grails et Hibernate nous vient de Ted Naleid.  Celui-ci explique comment il a pu améliorer les performances de son batch en <em>flushant</em> la session Hibernate et en vidant une Map de validation utilisée par Grails en interne. Ces 2 opérations exécutées régulièrement au cours du batch lui ont permis de démultiplier les performances. Grails s&#8217;appuie sur Hibernate, et il est parfois bon de se remémorer le fonctionnement de celui-ci pour expliquer et remédier à des problèmes observés coté Grails !</p>
<h4><a name="Unnouveautoporientperformance"></a>Un nouveau top 10 orienté performance</h4>
<p>Ce top10 se trouve <a title="sur le blog de lditeur Dynatrace" href="http://blog.dynatrace.com/2010/06/15/top-10-performance-problems-taken-from-zappos-monster-and-co/">sur le blog de l&#8217;éditeur Dynatrace</a>. A travers ce que ses consultants ont pu voir chez leur client (on parle donc d&#8217;un top 10 sélectif, chez des clients qui avaient conscience d&#8217;avoir des problèmes et qui pouvaient se permettre de les diagnostiquer avec un outil comme Dynatrace), il dresse un panorama qu&#8217;il est bon de toujours avoir à l&#8217;esprit durant nos développements. Nous nous sommes permis de le compléter avec nos propres retours d&#8217;expérience.</p>
<ul>
<li>une base de données trop sollicitée, ce qui inclut des données requetées trop grandes, ou requetées plusieurs fois, ou encore de trop nombreuses requêtes pour rapatrier une seule donnée (problème des mauvais usage des ORM).</li>
<li>une mauvaise programmation concurrente, avec un excès de synchronisation.</li>
<li>un manque de compréhension des appels <em>remote</em> et donc un trop grand nombre d&#8217;appels.</li>
<li>un mauvais usage des frameworks de mapping objet &#8211; relationnel. Ce point est largement répandu chez nos clients, en couvrant un large spectre, du simple problème de paramétrage à l&#8217;utilisation la plus hors de propos de la librairie.</li>
<li>l&#8217;existence de fuite mémoire (mais pourquoi ce point n&#8217;a t&#8217;il pas été placé en premier ?)</li>
<li>une librairie tierce coupable de mauvaises performance. Avec la multiplication des composants dans nos applications, le risque d&#8217;introduire des librairies moins robustes et moins performantes existe. Nous avons toujours trouvé étonnant de voir partir en production certains projets basés sur des librairies en béta&#8230;</li>
<li>une mauvaise utilisation des ressources machine (CPU, I/O&#8230;). Un traitement prend 50 % de CPU pendant 2 ms. Pas de quoi fouetter un chat ? Multipliez le par 1000 utilisateurs, une consommation mémoire excessive entraînant de fréquents GC, et nous en reparlerons.</li>
<li>des sites web trop chargés. La bande passante ne cesse d&#8217;augmenter, mais ce n&#8217;est pas une raison pour surcharger vos frontaux avec de nombreuses images trop volumineuses, des appels AJAX incessants, en ignorant joyeusement les stratégies de cache navigateur et/ou serveur.</li>
<li>une mauvaise gestion de caching des objets en mémoire. Surchargez votre mémoire pour alléger votre base, et c&#8217;est le Garbage Collector qui vous rappellera à l&#8217;ordre.</li>
<li>la sérialisation coute cher. Attention donc, si vous multipliez les appels RMI ou SOAP, à ne pas sérialiser trop d&#8217;objets, ou des objets trop volumineux.</li>
</ul>
<p>Nous avons échangé les places du point n°10 et du point bonus. Le point n°10, même si il a une réalité tangible, nous paraissait un peu trop marketing (mais c&#8217;est en partie la raison de vivre d&#8217;un blog éditeur) et nous préférons le déplacer en bonus :</p>
<ul>
<li>le problème intermittent, invisible. C&#8217;est celui dont il faut se prémunir en multipliant les tests (fonctionnels, de charge) ou en étant idéalement outillé.</li>
</ul>
<h3><a name="Agilit"></a>Agilité</h3>
<h4><a name="HappybirthdayPostIt"></a>Happy birthday Post-It !</h4>
<p>Et pour conclure cette revue de presse, nous ne résistons pas à l&#8217;envie de partager avec vous cette nouvelle d&#8217;importance: les Post-It, ces fameuses petites notes collantes multicolores, <a title="fêtent leurs 30 ans" href="http://www.journaldunet.com/economie/industrie/fabrication-de-post-it/">fêtent leurs 30 ans</a>. Rappelons que l&#8217;utilisation de Post-It est devenue partie intégrante de la pratique de Scrum. Comment mettre à jour facilement la liste des tâche d&#8217;un Sprint sans Post-It ?! Alors pour leur rendre hommage, <a title="regardons quelques photos" href="http://www.touilleur-express.fr/2009/03/30/3-exemples-de-tableaux-scrum/">regardons quelques photos</a> ou encore cette <a title="magnifique vido de laquelle ils sont les acteurs majeurs" href="http://vimeo.com/4587652">magnifique vidéo de laquelle ils sont les acteurs majeurs</a>. Bon anniversaire les p&#8217;tits gars !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.fr/2010/06/29/revue-de-presse-xebia-165/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Revue de Presse Xebia</title>
		<link>http://blog.xebia.fr/2010/06/01/revue-de-presse-xebia-161/</link>
		<comments>http://blog.xebia.fr/2010/06/01/revue-de-presse-xebia-161/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 05:36:54 +0000</pubDate>
		<dc:creator>Xebia France</dc:creator>
				<category><![CDATA[Revue de presse]]></category>
		<category><![CDATA[Ehcache]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Terracotta]]></category>
		<category><![CDATA[Threads]]></category>

		<guid isPermaLink="false">http://blog.xebia.fr/?p=4836</guid>
		<description><![CDATA[
La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.
Actualité  éditeurs / SSII

Où sont passées les stars de Sun ?

Le coin de la  technique

Nouvelle version pour EhCache
jucProfiler
Maven Enforcer

Actualité  éditeurs / SSII
Où sont passées les stars de Sun ?
Un an après le rachat de Sun par Oracle, qu&#8217;est il advenu des stars [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br />
<em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p>
<p><strong>Actualité  éditeurs / SSII</strong></p>
<ul>
<li><a href="http://blog.xebia.fr/2010/06/01/revue-de-presse-xebia-161/#OsontpasseslesstarsdeSun">Où sont passées les stars de Sun ?</a></li>
</ul>
<p><strong>Le coin de la  technique</strong></p>
<ul>
<li><a href="http://blog.xebia.fr/2010/06/01/revue-de-presse-xebia-161/#NouvelleversionpourEhCache">Nouvelle version pour EhCache</a></li>
<li><a href="http://blog.xebia.fr/2010/06/01/revue-de-presse-xebia-161/#jucProfiler">jucProfiler</a></li>
<li><a href="http://blog.xebia.fr/2010/06/01/revue-de-presse-xebia-161/#MavenEnforcer">Maven Enforcer</a></li>
</ul>
<h3><a name="ActualitditeursSSII"></a>Actualité  éditeurs / SSII</h3>
<h4><a name="OsontpasseslesstarsdeSun"></a>Où sont passées les stars de Sun ?</h4>
<p>Un an après le rachat de Sun par Oracle, qu&#8217;est il advenu des stars de Sun ? La réponse est plutôt radicale : elles se sont envolées vers des cieux plus cléments. Avant d&#8217;entrer dans plus de détails, on peut d&#8217;abord noter que la différence &laquo;&nbsp;génétique&nbsp;&raquo; entre Sun, moteur d&#8217;innovation proche d&#8217;une entreprise de recherche, et Oracle, éditeur logiciel centré sur le business, augurait de nombreux chocs culturels.<br />
Certains ont été violents, et la rupture a été amère. C&#8217;est le cas pour James Gosling, qui a été le plus prolixe (<a href="http://blogs.sun.com/jag/entry/javame_is_not_dead" title="sur son blog" >sur son blog</a>) au sujet de son départ, évoquant une démission qui l&#8217;a occupé à plein temps pendant plusieurs semaines. De manière comparable, Tim Bray a rejoint Google, en ne détaillant pas les raisons qui l&#8217;ont poussées à quitter Oracle mais en laissant transparaître une certaine amertume.<br />
D&#8217;autres sont partis car Oracle ne leur donnait pas de garanties sur leur technologie : Charles Nutter et Thomas Enebo ont rejoint <a href="http://www.engineyard.com/" title="Engine Yard" >Engine Yard</a> pour continuer à développer JRuby. Kohsuke Kawaguchi a monté sa société pour porter Hudson.<br />
Enfin, certains n&#8217;ont pas reçu d&#8217;offre d&#8217;Oracle. C&#8217;était attendu pour Jonathan Schwartz et Scott McNealy qui étaient quasiment condamnés par leur position au sommet de la hiérarchie de Sun. C&#8217;était plus surprenant pour Simon Phipps, responsable de l&#8217;open source, qui occupe un poste équivalent chez <a href="http://forgerock.com/" title="ForgeRock" >ForgeRock</a> (qui entend développer -OpenSSO- pardon OpenAM, le nom OpenSSO étant déposé).<br />
Alors, cette vague de départs sera t&#8217;elle préjudiciable à Oracle ? Sur le plan de l&#8217;innovation, certainement. Sur un plan purement business, on peut en douter, aucun des &laquo;&nbsp;sous&nbsp;&raquo;-produits (sans que nous portions de jugement de qualité) de Sun n&#8217;étant stratégiques pour la firme de Larry Ellison. D&#8217;ailleurs, si l&#8217;on jette rapidement un œil à ceux qui sont restés, on note John Fowler, Cindy Reese, et Mike Splain, tous trois impliqués dans la branche hardware. De là à dire que c&#8217;était la principale visée d&#8217;Oracle (avec la JVM)&#8230; &laquo;&nbsp;Malheureusement&nbsp;&raquo;, Oracle a aussi hérité de bébés bien encombrants, comme les JUG (voir <a href="http://blog.loof.fr/2010/05/oracle-et-les-jugs.html" title="larticle de Nicolas de Loof  ce sujet" >l&#8217;article de Nicolas de Loof à ce sujet</a>).</p>
<p><a href="http://www.infoworld.com/d/the-industry-standard/suns-stars-where-are-they-now-and-why-did-they-leave-765?source=footer" title="Via infoWorld" >Via infoWorld</a></p>
<h3><a name="Lecoindelatechnique"></a>Le coin de la  technique</h3>
<h4><a name="NouvelleversionpourEhCache"></a>Nouvelle version pour EhCache</h4>
<p>Terracotta maintient le rythme des évolutions Ehcache, en nous livrant cette nouvelle version numérotée 2.1.<br />
Après un mois de maturation en bêta, l&#8217;éditeur officialise donc la dernière mouture stable de son célèbre cache.<br />
C&#8217;est surtout l&#8217;occasion d&#8217;étoffer son offre produit en ajoutant notamment un plugin de monitoring permettant de surveiller en temps réel les métriques essentielles du cache. Grâce à lui, les développeurs pourront affiner la configuration du cache, par contre pour l&#8217;utiliser en production il vous faudra une version payante.<br />
Le support Websphere a bénéficié lui aussi d&#8217;améliorations pour garantir à ses utilisateurs l&#8217;accès à toutes les fonctionnalités du produit.<br />
Cela inclut tout naturellement, le support la solution Terracotta Web Session, un cluster de session web à haute disponibilité, déjà disponible pour Weblogic, JBoss, Tomcat et Jetty.<br />
L&#8217;utilisation de JTA a aussi été largement améliorée, les configurations standalone et Hibernate sont à présent supportées, ce qui permet de couvrir l&#8217;intégralité des stratégies Hibernate.<br />
En dernier point d&#8217;amélioration, le développement a été axé vers de meilleures performances et un paramétrage fin des SLAs. C&#8217;est par exemple la fonctionnalité <a href="http://ehcache.org/documentation/non_stop_cache.html" title="NonStopCache" >NonStopCache</a> qui permet de contrôler le timeout des opérations sur le cache, voire même de passer automatiquement d&#8217;un cache sur disque à un cache en mémoire vive en cas d&#8217;indisponibilité. Par ailleurs le <a href="http://ehcache.org/documentation/unlocked_reads_view.html" title="UnlockedReadsView" >UnlockedReadsView</a> offre une vue non consistante du cache. Dans les faits, elle ignore les verrous d&#8217;écriture et ne pose pas de verrou de lecture, l&#8217;équivalent d&#8217;un READ_UNCOMITTED avec des performances très largement accrues.</p>
<ul>
<li><a href="http://www.terracotta.org/news/pr/2010-05-25-ehcache-2.1" title="Lannonce Terracotta" >L&#8217;annonce Terracotta</a></li>
<li><a href="http://dsoguy.blogspot.com/2010/04/ehcache-21-beta-lots-of-stuff-still.html" title="Un article plus pouss par Steve Harris" >Un article plus poussé par Steve Harris</a></li>
<li><a href="http://ehcache.org/" title="La page daccueil du projet" >La page d&#8217;accueil du projet</a></li>
</ul>
<h4><a name="jucProfiler"></a>jucProfiler</h4>
<p>Il y a quelques années, <a href="http://blog.xebia.fr/2007/11/29/chroniques-de-la-performance-a-propos-de-contentions/" title="certains se sont arrachés les cheveux pour détecter les contentions dans un programme massivement parallélisé" >certains se sont arrachés les cheveux pour détecter les contentions dans un programme massivement parallélisé</a>. Malheureusement pour les amoureux des nœuds au cerveau, les développeurs de chez IBM se sont penchés sur le sujet et proposent un outil pour diagnostiquer ce type de problèmes : <a href="http://aminoprj.blogspot.com/2010/01/jucprofiler-javautilconcurrent-locks.html" title="jucProfiler" >jucProfiler</a> (pour java.util.concurrent). Le principe est simple : instrumenter le bytecode de certaines classes de <code>java.util.concurrent.locks</code> et tracer les appels à <code>java.util.concurrent.locks.LockSupport</code> et <code>java.util.concurrent.locks.AbstractQueuedSynchronizer</code>.<br />
L&#8217;outil génère ensuite un rapport permettant d&#8217;identifier deux types de problèmes sur les thread, consomateurs de temps :</p>
<ul>
<li>du temps de contention : un verrou est réservé par un autre thread.</li>
<li>du temps d&#8217;attente : le thread est en <code>wait</code>.</li>
</ul>
<p>Et cerise sur le gâteau, pour ceux d&#8217;entre vous lassés de devoir diagnostiquer des problèmes de performances en analysant des fichiers texte de trois pieds de long, un éditeur graphique est même fourni.</p>
<div align="center">
    <img src="http://blog.xebia.fr/wp-content/uploads/2010/06/juc.jpg" border="0" alt="" />
</div>
<p>Comme le dit justement la conclusion de l&#8217;article, la généralisation de la programmation parallèle nous oblige à nous armer de meilleurs outils. Il semblerait que jucProfiler en fasse partie. Si l&#8217;un de nos lecteurs a eu l&#8217;opportunité de l&#8217;utiliser en condition réelle, nous sommes bien sûr preneurs d&#8217;un retour d&#8217;expérience.</p>
<h4><a name="MavenEnforcer"></a>Maven Enforcer</h4>
<p>Sonatype a récemment mis en ligne une présentation en deux parties (<a href="http://www.sonatype.com/people/2010/05/sonatypes-maven-training-on-youtube/" title="ici" >ici</a> et <a href="http://www.sonatype.com/people/2010/05/maven-enforcer-plugin-tutorial-part-2/" title="là" >là</a>) sur le plugin <a href="http://maven.apache.org/enforcer/index.html" title="Maven Enforcer" >Maven Enforcer</a>.<br />
Ce plugin permet de définir des règles afin d&#8217;obtenir un build Maven reproductible sur différents environnements. Il permet entre autres :</p>
<ul>
<li>de spécifier une version ou une plage de versions de Maven,</li>
<li>de spécifier une version ou une plage de versions du JDK,</li>
<li>de spécifier une architecture (OS/CPU) sur laquelle s&#8217;exécute le build,</li>
<li>de s&#8217;assurer que le projet ne contient pas de dépendances (transitives) vers des versions non explicites (SNAPSHOT, LATEST ou RELEASE),</li>
<li>de s&#8217;assurer que le projet n&#8217;utilise pas de plugins ayant une version non explicite (SNAPSHOT, LATEST ou RELEASE),</li>
<li>de bannir des dépendances,</li>
<li>de définir ses propres règles (en Java ou avec un script BeanShell).</li>
</ul>
<p>La présentation met l&#8217;accent sur la nécessité de fixer les versions des dépendances et des plugins afin d&#8217;éviter qu&#8217;un build ne devienne instable suite à la publication d&#8217;une nouvelle version d&#8217;une dépendance ou d&#8217;un plugin. Il préconise notamment l&#8217;emploi de Maven en version supérieure à 2.0.9 pour laquelle le POM parent n&#8217;utilise plus que des versions explicites des plugins.</p>
<p>Elle recommande aussi de spécifier une version du JDK (1.5.x par exemple) afin d&#8217;éviter différentes problématiques telles que l&#8217;utilisation d&#8217;API non supportées ou la différence de comportement de certains plugins Maven en fonction de la version de la JVM sur laquelle ils sont exécutés.</p>
<p>Une fois les bonnes pratiques exposées, la configuration des différentes règles permettant d&#8217;effectuer les vérifications est abordée.</p>
<p>Le plugin Maven Enforcer est encore peu connu mais gagnerait à être utilisé pour éviter des problèmes récurrents. Cette présentation est un bon point de départ pour aborder sa mise en place.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.fr/2010/06/01/revue-de-presse-xebia-161/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kirk Pepperdine : Java Performance Tuning</title>
		<link>http://blog.xebia.fr/2010/05/04/kirk-pepperdine-java-performance-tuning-2/</link>
		<comments>http://blog.xebia.fr/2010/05/04/kirk-pepperdine-java-performance-tuning-2/#comments</comments>
		<pubDate>Tue, 04 May 2010 09:24:40 +0000</pubDate>
		<dc:creator>Xebia France</dc:creator>
				<category><![CDATA[Java / JEE]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[J2EE]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false">http://blog.xebia.fr/?p=4546</guid>
		<description><![CDATA[Xebia-training a le plaisir d’accueillir Kirk Pepperdine, un référent de la communauté Java EE pour une formation d’optimisation des performances Java EE (Java performance tuning) les 7, 8, 9 et 10 juin dans nos locaux.
Cette formation approfondie de 4 jours vous permettra d’obtenir les compétences nécessaires pour optimiser la performance de vos applications Java. Vous [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://training.xebia.fr">Xebia-training</a> a le plaisir d’accueillir Kirk Pepperdine, un référent de la communauté Java EE pour une formation d’optimisation des performances Java EE <em>(Java performance tuning)</em> les 7, 8, 9 et 10 juin dans nos locaux.</p>
<p>Cette formation approfondie de 4 jours vous permettra d’obtenir les compétences nécessaires pour optimiser la performance de vos applications Java. Vous aborderez pendant cette formation tous les aspects de la performance : l’outillage nécessaire, les méthodologies à appliquer, les concepts d’architecture sous jacents à la performance, les meilleures pratiques, le benchmarking et la gestion de mémoire.</p>
<p>A l’issue de cette formation, vous serez en mesure :</p>
<ul>
<li>D’identifier rapidement et régler les problèmes de performance de vos applications.</li>
<li>D’identifier et résoudre des problèmes de fuite mémoire en quelques heures.</li>
<li>D’isoler des problèmes classiques et d’éviter de s’engager dans des plans d’actions couteux et inefficaces.</li>
<li>D’identifier des problèmes de performance avant qu’ils ne deviennent critiques pour les applications.</li>
</ul>
<p>Les stagiaires bénéficieront des Tips de Kirk Pepperdine, référence reconnue dans le monde de l’optimisation de performance objet.<br />
Kirk Pepperdine dispose de 15 ans d’expérience dans les technologies OO et l’optimisation de la performance. Figure emblématique du monde Java et élu <em>&laquo;&nbsp;Champion JAVA&nbsp;&raquo;</em> en 2005, Kirk est reconnu comme le référent de l’optimisation de performance Java.<br />
Vous pouvez consulter le programme complet de cette formation en consultant notre site : <a href="http://training.xebia.fr/formation-java-performance-tuning-kirk-pepperdine/">http://training.xebia.fr/formation-java-performance-tuning-kirk-pepperdine/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.fr/2010/05/04/kirk-pepperdine-java-performance-tuning-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Catalogue Xebia Training</title>
		<link>http://blog.xebia.fr/2010/02/24/catalogue-xebia-training/</link>
		<comments>http://blog.xebia.fr/2010/02/24/catalogue-xebia-training/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 12:32:34 +0000</pubDate>
		<dc:creator>Xebia France</dc:creator>
				<category><![CDATA[Exploitation]]></category>
		<category><![CDATA[Java / JEE]]></category>
		<category><![CDATA[Méthodes agiles]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[eXtrem Programming]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://blog.xebia.fr/?p=4085</guid>
		<description><![CDATA[
Nous sommes heureux de vous proposer le nouveau catalogue de formation Xebia Traning :

Le catalogue numérique.
Le catalogue PDF.

Xebia Training se positionne logiquement dans la continuité de Xebia, tant sur la qualité de son offre de formation technique que méthodologique (méthodes agiles), en proposant des formations haut de gamme animées uniquement par les référents de leur [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flipflashpages.uniflip.com/2/26742/50371/pub/"><img src="http://blog.xebia.fr/wp-content/uploads/2010/02/xebia-training.png" style="margin: 1em 1em 1em 1em; float: right;" /></a><br />
Nous sommes heureux de vous proposer le nouveau <a href="http://flipflashpages.uniflip.com/2/26742/50371/pub/">catalogue de formation Xebia Traning</a> :</p>
<ul>
<li>Le <a href="http://flipflashpages.uniflip.com/2/26742/50371/pub/">catalogue numérique</a>.</li>
<li>Le <a href="http://training.xebia.fr/wp-content/uploads/catalogue%20des%20formations%202010-xebia-training.pdf">catalogue PDF</a>.</li>
</ul>
<p><a href="http://training.xebia.fr">Xebia Training</a> se positionne logiquement dans la continuité de Xebia, tant sur la qualité de son offre de formation technique que méthodologique (méthodes agiles), en proposant des formations haut de gamme animées uniquement par les référents de leur domaine.</p>
<p>Avec pour principe premier le refus de tout compromis sur la qualité du formateur et du contenu, <a href="http://training.xebia.fr">Xebia Training</a> fait systématiquement intervenir des acteurs de références dans leurs domaines respectifs.</p>
<p>Nos formations, savant équilibre entre théorie et travaux pratiques, sont destinées à un large public soucieux d’acquérir les meilleures pratiques de notre industrie.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.fr/2010/02/24/catalogue-xebia-training/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Performance, les Xebians jouent les démineurs</title>
		<link>http://blog.xebia.fr/2010/01/27/performance-les-xebians-jouent-les-demineurs/</link>
		<comments>http://blog.xebia.fr/2010/01/27/performance-les-xebians-jouent-les-demineurs/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 17:19:40 +0000</pubDate>
		<dc:creator>Pablo Lopez</dc:creator>
				<category><![CDATA[Java / JEE]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[log4j]]></category>
		<category><![CDATA[VisualVM]]></category>

		<guid isPermaLink="false">http://blog.xebia.fr/?p=3883</guid>
		<description><![CDATA[
Le premier XKE dans nos nouveaux locaux a donné lieu à de bien curieuses scènes : des bisounours ont hué des poubelles sous le regard moqueur de pokemons ! Et, non, les cartons de déménagement ne nous sont pas tombés sur la tête. Ce n'était là que quelques uns des noms choisis par des équipes [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2010/01/picto.png" alt="" /></p>
<p>Le premier <a title="XKE" href="http://blog.xebia.fr/2008/03/03/un-xke-chez-xebia/">XKE</a> <a title="dans nos nouveaux locaux" href="http://blog.xebia.fr/2010/01/15/2010-xebia-fait-peau-neuve/">dans nos nouveaux locaux</a> a donné lieu à de bien curieuses scènes : des <em>bisounours</em> ont hué des <em>poubelles</em> sous le regard moqueur de <em>pokemons</em> ! Et, non, les cartons de déménagement ne nous sont pas tombés sur la tête. Ce n'était là que quelques uns des noms choisis par des équipes de 3 à 4 consultants, qui se sont mesurés dans un concours de tuning de performance, sur une application Java EE standard, buggée (<em>volontairement</em>, pour une fois) par les maîtres de cérémonie, <a title="Guillaume Bodet" href="http://blog.xebia.fr/author/gbodet/">Guillaume Bodet</a> et <a title="Cyrille Le Clerc" href="http://blog.xebia.fr/author/cleclerc/">Cyrille Le Clerc</a>. Tous les participants se sont vus remettre une VM, contenant un Tomcat, une application (<em>PetClinic</em> de Spring, revue et "corrigée") et des scripts de performance JMeter. Le code source n'a, dans un premier temps, pas été fourni.</p>
<p>Pour tous, un seul but : faire diminuer les temps de réponses de l'application.</p>
<p>Les règles étaient les suivantes :</p>
<ul>
<li>Un bug n'est considéré comme trouvé que lorsqu'il a été identifié, qu'un correctif a été proposé et que la preuve est faite que ce correctif permet d'améliorer significativement les temps de réponse.</li>
<li>Il existe trois niveaux de difficulté, allant du bug évident à l'anomalie la plus fourbe.</li>
<li>Le choix des outils est libre.</li>
</ul>
<p>A vos marques... Prêts ? Débuggez !</p>
<h3><a name="Prambule"></a>Préambule</h3>
<p>L'un des buts de ce Xke était d'être très didactique, dans les méthodes de recherche et dans l'utilisation des outils. Les bombes placées dans le code permettaient de réaliser une progression linéaire (dans la difficulté comme dans les gains attendus). Cette progression est retranscrite dans cet article et ceux qui vont suivre.</p>
<p>Cependant, pour différentes raisons que nous aurons l'occasion d'expliquer, l'ordre des analyses, et donc de découvertes des bugs, n'est pas celui qu'aurait choisi un champion de la performance, j'ai nommé Kirk Pepperdine. Nous lui avons soumis notre application, et nous vous exposerons sa méthode d'analyse et les raisons qui la motivent dans le dernier article de la série.</p>
<h3><a name="Premiercontactaveclapplication"></a>Premier contact avec l'application...</h3>
<p>Ouverture du navigateur, entrée de l'url, et, pas de surprise, l'application PetClinic s'ouvre.</p>
<div><img src="http://blog.xebia.fr/wp-content/uploads/2010/01/application.png" border="0" alt="" /></div>
<p>Premier lancement de JMeter, et première constatation : avec un seul utilisateur, l'application met en moyenne plus de 2 secondes à répondre. Inacceptable pour la plupart des sites web (surtout avec un seul utilisateur actif).</p>
<div><a href="http://blog.xebia.fr/wp-content/uploads/2010/01/JMeter1.png"><img class="alignnone size-medium wp-image-3886" title="JMeter1" src="http://blog.xebia.fr/wp-content/uploads/2010/01/JMeter1-650.png" alt="JMeter1" /></a></div>
<h3><a name="etpremiersrglages"></a>... et premiers réglages</h3>
<p>A première vue, la machine ne semble pas à genoux, on peut donc incriminer directement l'application.<br />
Nous allons donc chercher à savoir ce qu'elle fait. Un réflexe classique, qu'un certain nombre d'entre nous a eu, est d'aller ouvrir les logs. Catalina.out est vide, on n'a pas de répertoire de logs applicatives évident, à priori le coupable classique, la configuration log4j, est à écarter. Et pourtant... Pour savoir ce que fait réellement notre application, il est possible de réaliser une série de thread dumps. Pour cela, deux possibilités :</p>
<ul>
<li>la vieille école, qui va dumper le contenu des threads à l'aide d'un kill -3 sur la jvm.</li>
<li>l'école moderne, qui va utiliser <a title="JVisualVm" href="http://blog.xebia.fr/2008/10/22/diagnostic-dune-jvm-a-distance/">JVisualVm</a> (et <a title="ses plugins" href="https://visualvm.dev.java.net/plugins.html">ses plugins</a>) pour réaliser la même opération à l'aide d'une belle interface.</li>
</ul>
<div><a href="http://blog.xebia.fr/wp-content/uploads/2010/01/TDLog4j.png"><img class="alignnone size-medium wp-image-3890" title="TDLog4j" src="http://blog.xebia.fr/wp-content/uploads/2010/01/TDLog4j-650.png" alt="TDLog4j" /></a></div>
<p>Et là, demie surprise, notre thread actif est souvent surpris dans la méthode <code>org.apache.log4j.spi.LoggingEvent.getLocationInformation</code>. Nous aurions donc un logger actif. Nos soupçons initiaux se confirment, ne reste plus qu'à débusquer le coupable.<br />
Nous n'avons pas (encore) le code source. Or, cette bombe plombe tellement l'application qu'il n'est pas envisageable que nous ne puissions pas la résoudre de suite. On doit donc avoir un fichier de paramétrage de la log externalisé. Là encore, VisualVm va nous aider. Dans la fenêtre overview, les paramètres de démarrage de la VM sont affichés. Et l'on voit apparaitre une directive de configuration log4j, <code>-Dlog4j.configuration</code>.</p>
<div><img src="http://blog.xebia.fr/wp-content/uploads/2010/01/VMOverview.png" border="0" alt="" /></div>
<p>Un petit grep dans le répertoire de lancement de Tomcat (<code>$TOMCAT_HOME/bin</code>), et nous voyons apparaître dans le setEnv.sh la ligne <code>-Dlog4j.configuration=file:$CATALINA_HOME/conf/log.xml</code>. Et si nous ouvrons ce fichier, le root Logger est bien en DEBUG. Mais aucune directive spécifique pour logger ailleurs que dans la console. Tout devrait donc aller dans catalina.out. Ca sent la redirection 'sauvage'. Continuons à parcourir les fichiers de lancement. Un petit tour dans catalina.sh, et surprise, une belle redirection Unix <code>"$CATALINA_BASE"/logs/catalina.out 1&gt; /var/log/catalina/tomcat.log  &amp;</code><br />
Et en ouvrant ce fichier, on comprend mieux le temps perdu : des milliers de lignes de debug !</p>
<div><a href="http://blog.xebia.fr/wp-content/uploads/2010/01/debugLog.png"><img class="alignnone size-medium wp-image-3895" title="debugLog" src="http://blog.xebia.fr/wp-content/uploads/2010/01/debugLog-650.png" alt="debugLog" /></a></div>
<p>Celles ci ont d'ailleurs une particularité sympathique : à chaque ligne de debug, le numero de ligne de la classa Java est indiqué.<br />
C'est pratique ! Pourquoi ne met on pas systématiquement en place cette configuration sur nos projets ?<br />
Un petit tour dans la documentation Log4J nous apprend :</p>
<div><a href="http://blog.xebia.fr/wp-content/uploads/2010/01/docLog4J.png"><img class="alignnone size-medium wp-image-3896" title="docLog4J" src="http://blog.xebia.fr/wp-content/uploads/2010/01/docLog4J-650.png" alt="docLog4J" /></a></div>
<p>Log4J nous prévient, ces méthodes sont sous performantes. Si l'on creuse un peu dans le source, on trouve la classe affichant les pattern %M et %L, <code>org.apache.log4j.spi.LocationInfo</code>, qui contient le constructeur suivant :</p>
<div class="syntax_hilite">
<div id="java-2">
<div class="java"><span style="color: #000000; font-weight: bold;">public</span> LocationInfo<span style="color: #66cc66;">&#40;</span><a href="http://www.google.com/search?q=allinurl%3AThrowable+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">Throwable</span></a> t, <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">String</span></a> fqnOfCallingClass<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>t == <span style="color: #000000; font-weight: bold;">null</span> || fqnOfCallingClass == <span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #000000; font-weight: bold;">return</span>;</p>
<p><a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">String</span></a> s;<br />
<span style="color: #808080; font-style: italic;">// Protect against multiple access to sw.</span><br />
<span style="color: #000000; font-weight: bold;">synchronized</span><span style="color: #66cc66;">&#40;</span>sw<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
t.<span style="color: #006600;">printStackTrace</span><span style="color: #66cc66;">&#40;</span>pw<span style="color: #66cc66;">&#41;</span>;<br />
s = sw.<span style="color: #006600;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
sw.<span style="color: #006600;">getBuffer</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">setLength</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#91;</span>...<span style="color: #66cc66;">&#93;</span></div>
</div>
</div>
<p>
Autrement dit, pour chaque ligne de log, Log4J génère une stackTrace pour pouvoir récupérer le numéro de la ligne et le nom de la méthode. Pas vraiment performant.<br />
Modifions donc le pattern et observons le résultat.</p>
<div><a href="http://blog.xebia.fr/wp-content/uploads/2010/01/JMeter2.png"><img class="alignnone size-medium wp-image-3887" title="JMeter2" src="http://blog.xebia.fr/wp-content/uploads/2010/01/JMeter2-650.png" alt="JMeter2" /></a></div>
<ul>
<li> Suppression de %M:%L dans le pattern du Logger</li>
<li> Temps moyen de 2,3 s à 2,0 s pour 1 utilisateur</li>
<li> 2 points pour l'équipe qui a trouvé</li>
</ul>
<p>Toujours concernant ce fichier de log, nous voyons apparaître une ligne ne respectant pas le <em>PatternLayout</em> de Log4J, préfixée par <em>Hibernate</em>, qui trace une requête SQL. Gardons cette ligne en mémoire, nous y repenserons quand nous aurons le code source.</p>
<p>Deuxième amélioration immédiate envisageable, une application, qui plus est en production, ne devrait pas avoir besoin d'un niveau de log aussi fin. Passons le donc à ERROR.</p>
<div><a href="http://blog.xebia.fr/wp-content/uploads/2010/01/JMeter3.png"><img class="alignnone size-medium wp-image-3888" title="JMeter3" src="http://blog.xebia.fr/wp-content/uploads/2010/01/JMeter3-650.png" alt="JMeter3"  /></a></div>
<ul>
<li> Logger de DEBUG à ERROR</li>
<li> Temps moyen de 2,0 s à 1,75 s pour 1 utilisateur</li>
<li> 1 point pour l'équipe qui a trouvé</li>
</ul>
<p>Nous avons fait un sort au logger. Mais nous n'en avons pas encore fini avec la configuration out-of-the-box de cette application.</p>
<h4><a name="Source"></a>Source</h4>
<p><a title="Image libre de droits" href="http://commons.wikimedia.org/wiki/File:Magnifying_glass_and_Stamp_tong.jpg">Image libre de droits</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.fr/2010/01/27/performance-les-xebians-jouent-les-demineurs/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
