<?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>Communauté Magento francophone &#187; Test / Bench</title>
	<atom:link href="http://www.wikigento.com/category/test-bench/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.wikigento.com</link>
	<description>Optimisation de sites E-commerce, hébergment Magento</description>
	<lastBuildDate>Mon, 30 Jan 2012 16:33:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>30 millions de visites par mois, c&#8217;est possible avec Magento?</title>
		<link>http://www.wikigento.com/test-bench/30-millions-de-visites-par-mois-est-ce-possible-avec-magento/</link>
		<comments>http://www.wikigento.com/test-bench/30-millions-de-visites-par-mois-est-ce-possible-avec-magento/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 18:34:16 +0000</pubDate>
		<dc:creator>Frédéric de Gombert</dc:creator>
				<category><![CDATA[Test / Bench]]></category>
		<category><![CDATA[performance magento]]></category>
		<category><![CDATA[performances]]></category>
		<category><![CDATA[scalabilité]]></category>
		<category><![CDATA[tests de montée en charge]]></category>
		<category><![CDATA[varnish]]></category>

		<guid isPermaLink="false">http://www.wikigento.com/?p=2085</guid>
		<description><![CDATA[Magento peut-il  gérer un catalogue de plusieurs millions d’articles ?  Une fréquentation de plus de 20 millions de visites par mois mois ?   Plusieurs milliers de commandes à l’heure ?]]></description>
			<content:encoded><![CDATA[<h2>Magento sur le grill!</h2>
<p>S’il est désormais acquis pour tous (ou presque) que Magento offre toute la richesse fonctionnelle requise pour des sites e-commerce professionnels exigeants, il existait peu d’études approfondies sur sa capacité à accompagner les projets les plus ambitieux en termes de volumétrie, et nous étions fréquemment interrogés sur cette question.  Magento peut-il  gérer un catalogue de plusieurs millions d’articles ?  Une fréquentation de plus de 20 millions de visites par mois mois ?   Plusieurs milliers de commandes à l’heure ?</p>
<p>La réponse à cette question dépend évidemment d&#8217;un certain nombre de paramètres pas forcément liés directement à la qualité intrinsèque de Magento (qualité des développements, infrastructure d&#8217;hébergement etc&#8230;) Toutefois, si l&#8217;on part du postulat que toutes les bonnes pratiques sont respectées à tous les niveaux, qu&#8217;est réellement capable de faire Magento?</p>
<p>Pour y répondre de manière factuelle, nous avons mené sur plusieurs semaines, une grande campagne de tests de charge, mobilisant jusqu’à une douzaine de serveurs octo-cœurs, déroulant des scénarios complets et représentatifs d’un trafic réel, sur plusieurs jours de charge.</p>
<p>Nous avons compilé ces résultats et procédé à quelques analyses présentées dans un document téléchargeable ici : <a href="http://factory.clients.smile.fr/docs/magento-performances_et_scalabilite.pdf">http://factory.clients.smile.fr/docs/magento-performances_et_scalabilite.pdf</a></p>
<h2>Quelques mots sur la démarche</h2>
<p>L’infrastructure et les scénarios de tests mis en œuvre ont pour objectif de mesurer plusieurs indicateurs :</p>
<ul>
<li>les temps de réponse des principaux écrans de navigation dans un contexte de très forte charge</li>
<li>la capacité de service nominale d’un serveur et la scalabilité d’une architecture multi-serveurs</li>
<li>le trafic supportée en fonction du nombre de frontaux</li>
<li>le nombre de commandes et de mise au panier par heure en fonction du nombre de frontaux</li>
<li>l’endurance de la plateforme sur une période de surcharge de 8h consécutives</li>
</ul>
<p>Le document présente l&#8217;ensemble de l&#8217;architecture mise en oeuvre ainsi que les adaptations apportées à Magento pour pouvoir supporter de telles charges.</p>
<h2>Alors, ça donne quoi?</h2>
<p>En synthèse, la plateforme Magento a présenté un bon comportement en charge et une excellente extensibilité.</p>
<p>Les temps de réponse unitaires sont excellents pour les pages qui utilisent pleinement le dispositif de cache, et sont plus élevés pour les pages de mise au panier ou de confirmation de commande. Un aspect important des choix d’architecture logicielle de Magento est de solliciter principalement la CPU des frontaux, et assez peu la base de données.   C’est cette caractéristique qui permet une très bonne extensibilité, c&#8217;est-à-dire la capacité à mettre en place une plateforme à très haute capacité d’accueil par simple ajout de serveurs.   Cette extensibilité permet de faire monter en puissance une plateforme au fur et à mesure que son succès se confirme, sans rupture ni grande migration.</p>
<p>Cette campagne de tests démontre qu’une plateforme Magento bien conçue peut accueillir 28 millions de visites par mois, en servant jusqu’à 800 pages par seconde aux heures de pointe.</p>
<p style="text-align: center"><a href="http://factory.clients.smile.fr/docs/magento-performances_et_scalabilite.pdf"><img class="aligncenter" src="http://factory.clients.smile.fr/docs/smile-magento-scalabilite.png" alt="Scalabilité de Magento" width="481" height="277" /></a></p>
<p>La base de données quant à elle, arrive à servir 20 serveurs frontaux en conservant une charge acceptable. Au delà, il faudra commencer à réfléchir à d&#8217;autres pistes d&#8217;optimisation.</p>
<h2>Ce qu&#8217;il faut retenir</h2>
<p>Notons, pour fixer les idées, que ces 28 millions de visites / mois, associées à une hypothèse de taux de transformation de 2% correspondent, pour un panier moyen de 20 €, <strong>à un CA mensuel de 22 M€, et pour un panier moyen de 100 €, à un CA mensuel de 112 M€</strong>.   Il y a peu d’acteurs dans le monde dans cette catégorie.</p>
<table style="width: 97%" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="298" valign="top"><strong>Indicateur</strong></td>
<td width="75" valign="top"><strong>Valeur</strong></td>
</tr>
<tr>
<td width="298" valign="top">Nombre d’articles dans le catalogue</td>
<td width="75" valign="top">1 050 000</td>
</tr>
<tr>
<td width="298" valign="top">Capacité d’un unique frontal Magento en visites / mois</td>
<td width="75" valign="top">1 525 200</td>
</tr>
<tr>
<td width="298" valign="top">Capacité de 10 frontaux Magento en visites / mois</td>
<td width="75" valign="top">14 136   000</td>
</tr>
<tr>
<td width="298" valign="top">Capacité de 10 frontaux Magento en commandes / heure</td>
<td width="75" valign="top">1 080</td>
</tr>
<tr>
<td width="298" valign="top">Nombre maximum de frontaux pour une base de données</td>
<td width="75" valign="top">20</td>
</tr>
<tr>
<td width="298" valign="top">Capacité maxi d’une plateforme Magento sur une base de   données unique, en visites / mois</td>
<td width="75" valign="top">28   millions</td>
</tr>
</tbody>
</table>
<p><span style="font-size: xx-small">&#8212;&#8212;&#8212;&#8212;&#8212;-</span></p>
<h2>Conclusion</h2>
<p>Beaucoup de chemin a été fait depuis les premières versions de Magento qui souffraient, il faut bien le reconnaître, de quelques soucis de performances. Aujourd&#8217;hui, la donne a changé et Magento n&#8217;a définitivement pas à rougir face aux mastodontes du e-commerce sur cette question de la scalabilité et des performances. Et ce que l&#8217;on sait aujourd&#8217;hui de Magento 2 qui nous arrivera l&#8217;année prochaine nous laisse espérer des résultats encore meilleurs&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wikigento.com/test-bench/30-millions-de-visites-par-mois-est-ce-possible-avec-magento/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Google Analytics intègre le temps de chargement des pages !</title>
		<link>http://www.wikigento.com/test-bench/google-analytics-integre-le-temps-de-chargement-des-pages/</link>
		<comments>http://www.wikigento.com/test-bench/google-analytics-integre-le-temps-de-chargement-des-pages/#comments</comments>
		<pubDate>Tue, 24 May 2011 12:38:27 +0000</pubDate>
		<dc:creator>Philippe Humeau</dc:creator>
				<category><![CDATA[Test / Bench]]></category>
		<category><![CDATA[performance magento]]></category>
		<category><![CDATA[chargement]]></category>
		<category><![CDATA[google analytics]]></category>
		<category><![CDATA[mesure]]></category>
		<category><![CDATA[Pageloadtime]]></category>
		<category><![CDATA[temps]]></category>

		<guid isPermaLink="false">http://www.wikigento.com/?p=2030</guid>
		<description><![CDATA[Analytics, load time et AFT Quand on vous dit que la vitesse ca change tout, c&#8217;est plus facile de le mesurer&#8230; Eh bien pour les pro de Google Analytics, c&#8217;est maintenant faisable. Il faut comprendre que mesurer la vitesse de chargement d&#8217;une page, c&#8217;est très complexe. Déjà la définition même de temps de chargement n&#8217;est [...]]]></description>
			<content:encoded><![CDATA[<h2>Analytics, load time et AFT</h2>
<p>Quand on vous dit que la vitesse ca change tout, c&#8217;est plus facile de le mesurer&#8230;</p>
<p>Eh bien pour les pro de Google Analytics, c&#8217;est maintenant faisable. Il faut comprendre que mesurer la vitesse de chargement d&#8217;une page, c&#8217;est très complexe. Déjà la définition même de temps de chargement n&#8217;est pas la même selon que l&#8217;on considère le moment ou la page est peuplée, la page est réellement active, on a finit tous les chargement, y compris les deferals etc&#8230;</p>
<p>La Google Team bosse actuellement sur le projet AFT, Above the Fold Time. C&#8217;est une nouvelle tentative de définition, assez maligne d&#8217;ailleurs, <a href="http://www.webperformancetoday.com/2011/03/16/above-the-fold-time-web-performance-measurement/">la conférence était intéressante</a>.</p>
<h2>Comment ca marche ?</h2>
<p>Le plus beau, c&#8217;est que c&#8217;est simplissime. Il suffit d&#8217;ajouter une ligne dans votre tag Analytics de page web, celle en orange ci-dessous :</p>
<pre>&lt;script type="text/javascript"&gt;
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);
<strong><span style="color: #ff6600;">_gaq.push(['_trackPageLoadTime']);</span></strong>
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
&lt;/script&gt;</pre>
<p>Vous vous posez encore des questions ? <a href="http://www.google.com/support/analyticshelp/bin/answer.py?hl=fr&amp;answer=1205784">http://www.google.com/support/analyticshelp/bin/answer.py?hl=fr&amp;answer=1205784</a></p>
<p style="text-align: center;">Les pros d&#8217;analytics vont donc pouvoir coupler les paramètres qui vont bien, vitesse de chargement et taux de conversion par exemple. Cela va nous ouvrir un nouveau monde de statistiques, de métriques, qui vont être très pertinentes je pense.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-2033" title="Google analytics page load time" src="http://www.wikigento.com/wp-content/uploads/2011/05/Capture.jpg" alt="" width="772" height="323" /></p>
<p style="text-align: center;">
<p>Je vais en parler avec mes amis qui font de la SEO chez Blog Ecommerce, Isobar et Cybercité pour voir si on ne peut pas faire une étude un petit peu approfondie sur le sujet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wikigento.com/test-bench/google-analytics-integre-le-temps-de-chargement-des-pages/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Benchmark de sites E-commerce : mesurez ce qui compte !</title>
		<link>http://www.wikigento.com/test-bench/benchmark-de-sites-e-commerce-mesurez-ce-qui-compte/</link>
		<comments>http://www.wikigento.com/test-bench/benchmark-de-sites-e-commerce-mesurez-ce-qui-compte/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 09:35:21 +0000</pubDate>
		<dc:creator>Philippe Humeau</dc:creator>
				<category><![CDATA[Test / Bench]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[apdex]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[funkload]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[test de charge]]></category>

		<guid isPermaLink="false">http://www.wikigento.com/?p=1622</guid>
		<description><![CDATA[Test de charge de son serveur de E-commerce Dans le cadre d&#8217;un benchmark de site Web, de test de charge pour être plus précis, que faut il prendre en compte et pourquoi ? Que ce soit un benchmark de Magento  ou de tout autre Framework / site, il faut le bon outil et surtout la [...]]]></description>
			<content:encoded><![CDATA[<h2 style="text-align: justify;"><span style="font-family: verdana,geneva;">Test de charge de son serveur de E-commerce<br />
</span></h2>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">Dans le cadre d&#8217;un benchmark de site Web, de test de charge pour être plus précis, que faut il prendre en compte et pourquoi ? Que ce soit un benchmark de Magento  ou de tout autre Framework / site, il faut le bon outil et surtout la bonne échelle.</span></p>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">Mesurer c&#8217;est une chose, mesurer utile ou interprétable, s&#8217;en est une  autre. La seule mesure qui compte au final, c&#8217;est la satisfaction de l&#8217;utilisateur qui surf sur le site concerné.</span></p>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">En l&#8217;occurrence une échelle de cette satisfaction existe, l&#8217;<a title="Apdex benchmark" href="http://www.apdex.org/overview.html">APDEX</a>.</span></p>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">Le but de cet indice est de mesurer, dans un temps donné, combien d&#8217;utilisateurs ont eu un temps de réponse satisfaisant. Dans cette chaine, tout est compté, la charge que le site impose au serveur, le temps d&#8217;acheminement des paquets, l&#8217;affichage de la page etc.</span></p>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">Autrement dit, si je fixe à 2,5 secondes le temps d&#8217;affichage optimal pour un site, combien d&#8217;utilisateurs vont pouvoir surfer en même temps sur la machine avant que 1 d&#8217;entre eux ait un temps supérieur à 2,5 secondes ? Combien vais-je en accueillir avant que 5% d&#8217;entre eux ait une page en plus de 2,5s ?</span></p>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;"><span style="text-decoration: underline;">l&#8217;APDEX comprend 4 niveaux :</span></span></p>
<ul style="text-align: justify;">
<li><span style="font-family: verdana,geneva;">satisfied</span></li>
<li><span style="font-family: verdana,geneva;">tolerating</span></li>
<li><span style="font-family: verdana,geneva;">frustrated</span></li>
<li><span style="font-family: verdana,geneva;">inacceptable</span></li>
</ul>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">c&#8217;est donc bien une échelle &laquo;&nbsp;user centric&nbsp;&raquo;. Le but est de satisfaire l&#8217;utilisateur ou tout au moins de ne pas l&#8217;irrité. Si l&#8217;on fixe la zone de satisfied à moins de 2,5 secondes, la zone de tolérance va de 2,5s, la zone de frustration sera à 10s (4 fois le temps de tolérance) et au delà on est dans l&#8217;inacceptable.</span></p>
<h2 style="text-align: justify;"><span style="font-family: verdana,geneva;">Formule de l&#8217;APDEX<br />
</span></h2>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;"> APDEX = ((nombre de satisfaits) + 0,5*(nombre des tolérants)) / total</span></p>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">(avec le nombre de frustrés = 0)</span></p>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">Si on reprend nos hypothèse et qu&#8217;on prend un groupe de 100 tests, mettons que 80 sont sous la barre des 2,5s, 20 sont entre 2,5 et 10 et 0 sont au delà de 10, le coefficient APDEX est de :</span></p>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">(80+20/2)/100=0,9</span></p>
<h2 style="text-align: justify;"><span style="font-family: verdana,geneva;">Se placer sur l&#8217;échelle</span></h2>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">A 1, tout le monde est satisfait, entre 0,94 et 1, vous êtes dans l&#8217;excellence, de 0,85 à 0,94, vous êtes bon, de 0,7 à 0,85 vous êtes honnêtes. de 0,5 à 0,7 c&#8217;est mauvais, en dessous de 0,5 c&#8217;est la zone de l&#8217;inacceptable.</span></p>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">Dans notre exemple au dessus, un APDEX à 0,9 nous donnait 80% d&#8217;utilisateurs en zone de satisfaction, 20% en zone de tolérance.</span></p>
<h2 style="text-align: justify;"><span style="font-family: verdana,geneva;">Mesurer cet indice</span></h2>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">L&#8217;outil Funkload, en dernièreversion utilise cette classification Apdex pour donner des rapports de tests de charge très complet. Une fois que vous avez préparé vos scénarii, il s&#8217;occupe de charger la machine jusqu&#8217;à ce que l&#8217;indice APDEX passe sous une certaine valeur. Une fois cette valeur atteinte, vous avez un nombre d&#8217;utilisateur simultanés.</span></p>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">Vous pourrez ainsi facilement mesurer la rapidité de votre site mais en condition réelle. Avec un utilisateur simultané, vous aurez surement des temps de chargements sous la barre de la seconde mais un serveur et son site sont fait pour la vie réelle, pour accueillir des milliers de visiteurs par jour.</span></p>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">Il existe prêt de 30 outils différents à ce jour pour mesurer cet indice mais je vous recommande très fortement <a title="Funkload" href="http://funkload.nuxeo.org/">Funkload </a>qui permet de faire cela en parallèle d&#8217;un test de charge avec des scenarii.</span></p>
<h2 style="text-align: justify;"><span style="font-family: verdana,geneva;">Ordre de grandeur pour Magento<br />
</span></h2>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">Par exemple, sans Reverse Proxy (RP), avec un serveur de base (bi quadcore 5420 / 8 go), bien configuré et optimisé, sous Magento 1.4 CE, avec un site correct devrait vous amener entre 150 utilisateurs simultanés, tous sous la barre des 2,5 secondes, avec un APDEX à 0,95. (95% des utilisateurs en zone de satisfaction, 5% en zone de tolérance)</span></p>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">Toujours sans RP, un gros molosse (bi hexacore 5670 / 8 Go) devrait vous amener à ~250 utilisateurs sous la barre des 2,5 s avec un APDEX à 0,95. (95% des utilisateurs en zone de satisfaction, 5% en zone de tolérance)</span></p>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">Un mono Quad core AMD 2382 (toujours sans RP), vous amène à 4s pour 150 utilisateurs.</span></p>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">Seulement 100, 150, 200 ? Oui, mais simultanés et sans l&#8217;aide d&#8217;un rproxy ou du full page cache pour les versions Enterprise de Magento (EE) !</span></p>
<h2 style="text-align: justify;"><span style="font-family:  verdana,geneva;">Funkload</span></h2>
<p style="text-align: justify;"><span style="font-family:  verdana,geneva;">Voici quelques captures d&#8217;écran de Funkload qui vont vous permettre de mieux comprendre le fonctionnement de l&#8217;utilitaire et ce qu&#8217;il produit comme rapport :</span></p>
<p style="text-align: justify;"><span style="font-family:  verdana,geneva;"><a href="http://www.wikigento.com/?attachment_id=1639"><img class="aligncenter size-medium wp-image-1639" title="Apdex spps" src="http://www.wikigento.com/wp-content/uploads/2010/08/Apdex-spps-500x421.jpg" alt="Apdex spps" width="500" height="421" /></a><br />
<em>Sur cette capture, on voit, en haut, le nombre de SPPS (Successfull page per second) et l&#8217;échelle du nombre de CU (Concurrent Users), de visiteurs simultanés. Juste en dessous, le graphique suivant montre l&#8217;indice Apdex, la barre verte montre un apdex de 0,95 à 20 utilisateurs simultanés (hors cache, hors rproxy etc&#8230;)<br />
</em></span></p>
<p><span style="font-family:  verdana,geneva;"><a href="http://www.wikigento.com/?attachment_id=1640"><img class="aligncenter size-medium wp-image-1640" title="CU" src="http://www.wikigento.com/wp-content/uploads/2010/08/CU-500x421.jpg" alt="CU" width="500" height="421" /></a><em>Ici, le graph montre le nombre de CU et le temps d&#8217;attente de chacun. A 40 CU, on a un temps de génération des pages de 2,5 secondes au minimum, 3 pour 90% des visiteurs.</em></span></p>
<p><span style="font-family:  verdana,geneva;">Vous pouvez trouver l&#8217;outil Funkload sur le site de son auteur M. Delbosc : </span>http://funkload.nuxeo.org/</p>
<p><span style="font-family: verdana,geneva;">Un grand bravo à Nuxeo qui porte haut les couleurs de l&#8217;opensource et de la qualité dans ce domaine, une entreprise Française en plus !<br />
</span></p>
<h2 style="text-align: justify;"><span style="font-family: verdana,geneva;">Conclusion</span></h2>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">Ce que nous cherchons tous à savoir c&#8217;est : combien d&#8217;utilisateurs puis-je accueillir dans des conditions optimales avec mes serveurs ? La réponse est maintenant à portée de main grâce à un indice représentatif de la qualité de la session de surf : l&#8217;APDEX et un outil de mesure et de test de charge : Funkload.</span></p>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">En général, on a deux mesures de ce que peut accueillir un serveur, une mesure en visiteurs uniques par jour et/ou l&#8217;autre en visiteurs connectés simultanément. Évidemment, vu le type de mesure Funkload, la deuxième est beaucoup plus réaliste. </span></p>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">Ceci étant, peut de personne peuvent exprimer leur besoin en visiteurs connectés simultanément alors que presque tout le monde sait dire combien il accueille de visites par jour. Du coup, la passerelle entre les deux n&#8217;est pas forcément aisée et elle est approximative.Les pics sont bien représenté dans les connexions simultanées mais pas dans un nombre de visiteurs unique par jour.<br />
</span></p>
<p style="text-align: justify;"><span style="font-family: verdana,geneva;">Disons si on devait donner un ordre d&#8217;idée, pour du Magento, le ratio entre les deux serait de 150 utilisateurs simultanés en moins de 2,5s avec un apdex de 0,9 correspond globalement à ~35 000 visiteurs uniques par jour.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wikigento.com/test-bench/benchmark-de-sites-e-commerce-mesurez-ce-qui-compte/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Magento &amp; Zend server : the benchmarks !</title>
		<link>http://www.wikigento.com/test-bench/magento-zend-server-the-benchmarks/</link>
		<comments>http://www.wikigento.com/test-bench/magento-zend-server-the-benchmarks/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 15:10:51 +0000</pubDate>
		<dc:creator>Philippe Humeau</dc:creator>
				<category><![CDATA[Optimisation LAMP/Zend/Magento]]></category>
		<category><![CDATA[Php/Zend/Magento]]></category>
		<category><![CDATA[Test / Bench]]></category>
		<category><![CDATA[Magento and Zend server performances benchmark]]></category>
		<category><![CDATA[Magento Zend server]]></category>
		<category><![CDATA[Zend and Magento]]></category>
		<category><![CDATA[Zend page cache]]></category>
		<category><![CDATA[Zend server benchmark]]></category>
		<category><![CDATA[Zend server performances]]></category>

		<guid isPermaLink="false">http://www.wikigento.com/?p=938</guid>
		<description><![CDATA[Cet article (en anglais) est un benchmark complet des performances comparées des versions 1.2, 1.3 et 1.3 avec flat catalog de Magento. Ensuite Zend server a été ajouté pour améliorer les performances de l'ensemble et des tests ont de nouveau été menées afin de comparer l'ensemble.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify">Bonjour à toutes et à tous,</p>
<p style="text-align: justify">Ce coup-ci l&#8217;article sera en anglais car c&#8217;est une publication d&#8217;un white paper rédigé à l&#8217;origine par <a title="NBS System hébergement et infogérance Magento" href="http://www.nbs-system.com/hebergement">NBS System</a> sur les performances de Magento quand on y couple Zend server. Les tests &amp; benchmarks sont fait entre les versions 1.2, 1.3 et 1.3 avec le flat catalog d&#8217;activé puis avec Zend Server et enfin avec Zend server incluant le page cache (version payante).</p>
<p style="text-align: justify">Ce white paper est en licence Creative commons paternity no commercial use, vous pouvez donc le télécharger, le modifier, le diffuser à votre convenance, sauf pour usage commercial. Celui-ci est uniquement autorisé aux sociétés NBS System, Zend et Varien. <em>(NBS System peut autoriser explicitement l&#8217;usage commercial de ce contenu sur demande)<br />
</em></pre>
<p>Vous pouvez le télécharger dans sa <a title="Magento and Zend server performances benchmark" href="http://www.wikigento.com/wp-content/uploads/2009/07/magento-and-zend-server-benchmarks-june-2009.pdf" target="_blank">version PDF intégrale ici</a>.</p>
<p><a rel="attachment wp-att-939" href="http://www.wikigento.com/?attachment_id=939"><img class="size-full wp-image-939 alignright" title="cc-logo" src="http://www.wikigento.com/wp-content/uploads/2009/07/cc-logo.jpg" alt="cc-logo" width="115" height="40" /></a></p>
<p align="center"><span style="font-size: large;"><span style="font-family: Verdana, &quot;geneva&quot;;"><strong>Magento &amp; Zend Benchmarks</strong></span></span></p>
<p><span style="font-size: large;"> </span></p>
<p><span style="font-size: large;"><span style="font-family: Verdana, &quot;geneva&quot;;"><strong><span style="font-size: large;"> </span></strong></span></span></p>
<p><span style="font-size: large;"> </span></p>
<p align="center"><span style="font-size: large;"><span style="font-family: Verdana, &quot;geneva&quot;;"><strong><span style="font-size: large;">Version 1.2, 1.3 (with &amp; without Flat Catalogs)</span></strong></span></span></p>
<p align="center"><span style="font-size: large;"><span style="font-family: Verdana, &quot;geneva&quot;;"><strong> </strong></span></span></p>
<p align="center"><span style="font-size: large;"><span style="font-family: Verdana, &quot;geneva&quot;;"><strong> </strong></span></span></p>
<h1>1. Foreword</h1>
<p><BR></p>
<p style="text-align: justify">Magento is a PHP/Zend application which intensively uses the CPU. Since version 1.1.6, each new version includes some mechanisms aimed to improve the performances. The goal is to use fewer resources for a given e-shop, which mainly means less CPU, in order to host more users with the same hardware.</p>
<p style="text-align: justify">One key to achieve better performances is how to optimize PHP pages generation and service. "LAMP" servers are well known and usually run Apache server with mod-php, eventually in fast_cgi mod.</p>
<p style="text-align: justify">Zend, the PHP Company, made a specific server (Zend Server), which includes a web application stack that (among other things) improves application performances through page caching and opcode reorganization &amp; acceleration.</p>
<p style="text-align: justify">Apache and Zend Server is an alternative to the usual Apache and mod-php to run Magento, the goal of theses studies &amp; tests is to qualify and estimate the performances added by the use of this software.</p>
<p style="text-align: justify">Many thanks to Yoav Kutner (Varien's CTO) for providing us with prefilled catalogs for 1.2 and 1.3 version of Magento. Thanks goes as well to Zend labs for providing help in configuration and tweaking of the Zend Server as well as explaining the in depth mechanism of the solution.</p>
<p style="text-align: justify"><span id="more-938"></span></p>
<h1>2. Methods &amp; tools used</h1>
<p><BR></p>
<p style="text-align: justify">The benchmarks were done using siege (2.66-2), with different numbers of simultaneous threads (5, 10, 20 and 40). Each thread opens a connection to the web server, request a page, and start again as soon as the page is fetched.</p>
<p style="text-align: justify">Tests were run over 5 minutes each; average pages retrieved was counted for this benchmark.</p>
<p style="text-align: justify">Two kinds of tests were done: the first one is the simplest; we only load the main page in loop, as fast as possible.</p>
<p style="text-align: justify">The second test is based on logs produced by a visit, loading all the data the browser collected (including css, js, images ...). As loading a single page would usually load multiple elements, the number displayed is much higher than the number of pages that would be actually seen by visitors.</p>
<p style="text-align: justify">(18 pages viewed by the user, for 91 items downloaded, a ratio around 5)</p>
<p style="text-align: justify">All results were obtained on the same hardware and operating system, for testing purposes, no reverse proxy was active during the benchmarks but APC code cache was running. This was a "standard", default environment with no special performance tweaks installed.</p>
<h2>Hardware used</h2>
<p>Dual Quad-Core AMD Opteron(tm) Processor 2376 (2.3GHz), 8GB Ram, 15K SAS disks. (Dell PE M605)</p>
<h2>Software context</h2>
<p>Operating system: Linux (2.6.27.10-grsec) on a Debian (lenny)<br />
Web Server: Apache2 (2.2.9-10+lenny2)<br />
PHP (mod-php): mod-php5 (5.2.6.dfsg.1-1+lenny3) / php-apc (3.0.19-2)<br />
PHP (Zend Server): zend-pe (1.0.0-1+b47) / mod-php5-zend-pe (5.2.9+b75)</p>
<h2>Repositories</h2>
<p>deb http://ftp.fr.debian.org/debian/ lenny main<br />
deb http://security.debian.org/ lenny/updates main<br />
deb http://volatile.debian.org/debian-volatile lenny/volatile main<br />
deb http://repos.zend.com/deb/pe pe non-free</p>
<h1>3. Magento Versions benchmarks</h1>
<p><BR></p>
<p style="text-align: justify">Those tests were realized on an 80 000 (later called 80 k) products catalog.</p>
<p style="text-align: justify">Graphs represent the average number of requests successfully loaded from the server per second during the 5 minutes test.</p>
<h2>Loading the homepage</h2>
<p align="center">
<p style="text-align: center;"><img class="size-medium wp-image-949 aligncenter" title="graph1 - Comparison between 1.2, 1.3 and 1.3 + flat catalog" src="http://www.wikigento.com/wp-content/uploads/2009/07/graph1-500x286.jpg" alt="graph1 - Comparison between 1.2, 1.3 and 1.3 + flat catalog" width="500" height="286" /><br />
Magento 1.3 is much faster than 1.2 showing the main page. Flat Catalogs do not help much displaying this homepage, and seems to even slow down a little under heavy loads. The performance between 1.2 and 1.3 is doubled for low charges and is still 33% higher under heavy load.</p>
<p style="text-align: justify">For a standard value, under a "standard" load, we can consider that +40% is a reasonable value when running a 1.3 version instead of a 1.2, at least for the homepage.<strong> </strong></p>
<h2>Full visit cycle</h2>
<p style="text-align: center" align="center"><a rel="attachment wp-att-950" href="http://www.wikigento.com/?attachment_id=950"><img class="aligncenter size-medium wp-image-950" title="Graph2 - Full visit, comparison between 1.2, 1.3 and 1.3 + FC" src="http://www.wikigento.com/wp-content/uploads/2009/07/graph2-500x286.jpg" alt="Graph2 - Full visit, comparison between 1.2, 1.3 and 1.3 + FC" width="500" height="286" /></a></p>
<p style="text-align: justify">The graph shows a slightly smaller increase with 1.3 compared to 1.2 and the flat catalog mechanism give an overall benefit which greatly increases the performances.</p>
<p>For the records, we can reasonably choose to keep theses values in mind:</p>
<p>Version 1.2 -&gt; 1.3 : +66%<br />
Version 1.3 -&gt; 1.3+Flat Catalog : +20%</p>
<h1>4. Apache + mod-php VS Apache + Zend Server</h1>
<p><BR></p>
<p style="text-align: justify">Zend Server (sometimes refered as ZS later on) comes with several built-in technologies for enhancing application performance:</p>
<ul style="text-align: justify">
<li> Zend Optimizer+ performs byte-code optimization and caching. This speeds up PHP applications by eliminating the process of reading scripts from disk and compiling them. Zend Optimizer+ runs automatically, and installing your application on top of Zend Server (ZS) is all you need to do in order to enjoy its benefits. During the test with ZS, APC Code cache is deactivated as Zend optimizer+ is doing the same job.</li>
<li> Zend Page Cache allows caching of complete PHP pages. Page Caching greatly improves the performance of web applications while maintaining dynamic capabilities through an elaborate system of caching rules that could be based on request parameters and user session data. Page Caching also has the benefit of not requiring any code changes, and can be set up from the Zend Server UI. Only the "pro" version contains this precise piece of software which definitely makes a difference as we will see in a minute.</li>
<li> Zend Data Cache is a set of API functions enabling a developer to store and manage data items (PHP strings, arrays and other data) and even output elements in either disk-based cache or shared memory cache. Zend Data Cache allows for precision-guided caching when Page Caching is not an option. The provided API is easy-to-use on existing code, and in many cases a developer can skip existing code sections by simply wrapping them with caching APIs. This precise piece of software would benefit from a little remastering of the code by Varien to really achieve a full support of this functionality. If done, we can imagine selectively flushing the cache when changing some pages on the servers and not destroying the whole Magento cache thus doing a "cold cache start" after a new functionality is put online.</li>
</ul>
<p style="text-align: justify"><strong><br />
Note: </strong>Zend Optimizer+ and Zend Data Cache are available in the free, community version of Zend Server, while Zend Page Cache requires a licensed Zend Server (full comparison of Zend Server and Zend Server Community Edition is located at <a href="http://www.zend.com/fr/products/server/editions">http://www.zend.com/fr/products/server/editions</a>).</p>
<h2><strong>Zend Server Configuration for Magento</strong></h2>
<p>In the benchmark, two caching rules have been defined:<br />
The first rule caches the JavaScript files which are dynamically merged into one request by Magento.<br />
This simple rule results in a very substantial improvement to response times.</p>
<p align="center"><img class="aligncenter size-medium wp-image-952" title="ZS - configuration screen shot 1" src="http://www.wikigento.com/wp-content/uploads/2009/07/sc11-500x327.jpg" alt="ZS - configuration screen shot 1" width="500" height="327" /></p>
<p style="text-align: justify">The second rule caches all web pages accessed by users who have nothing in their shopping carts or history (when the shopping cart is not empty or when the user history is saved, there is no point in page caching). As you can see in the screen capture below, this is accomplished by looking at $_SESSION variables and by splitting according to $_SERVER['REQUEST_URI'] in addition to the QUERY_STRING.</p>
<p align="center"><a rel="attachment wp-att-953" href="http://www.wikigento.com/?attachment_id=953"><img class="aligncenter size-medium wp-image-953" title="ZS - configuration screenshot 2" src="http://www.wikigento.com/wp-content/uploads/2009/07/sc2-499x427.jpg" alt="ZS - configuration screenshot 2" width="499" height="427" /></a></p>
<p>Finally, Zend Optimizer+ has been enabled for optimizing and caching the PHP byte-code.</p>
<p style="text-align: justify">As you can see, Zend Page Cache seems a very powerful feature. It needs fine tuning and better configuration, but let's see results :</p>
<h2>Homepage / 80 000 products catalog</h2>
<p style="text-align: center" align="center">
<p align="center"><a rel="attachment wp-att-954" href="http://www.wikigento.com/?attachment_id=954"><img class="size-medium wp-image-954 aligncenter" title="Graph3 : comparison between 1.3, 1.3 + FC, 1.3+ZS, 1.3+FC+ZS" src="http://www.wikigento.com/wp-content/uploads/2009/07/graph3-499x254.jpg" alt="Graph3 : comparison between 1.3, 1.3 + FC, 1.3+ZS, 1.3+FC+ZS" width="499" height="254" /></a></p>
<p style="text-align: justify">Load on main page doesn't prove very constructive, although, on heavy load (40 concurrent requests), Zend Server (with or without page cage) is slightly better than basic mod-php, but almost no real improvements on this test. A 5% or less win is not to be taken seriously as it is the error margin of the tests.</p>
<h2>Full visit / 80k products</h2>
<p style="text-align: center" align="center"><a rel="attachment wp-att-958" href="http://www.wikigento.com/?attachment_id=958"><img class="size-medium wp-image-958 aligncenter" title="Graph4 : Full visit, 80K product comparison chart" src="http://www.wikigento.com/wp-content/uploads/2009/07/graph4-499x254.jpg" alt="Graph4 : Full visit, 80K product comparison chart" width="499" height="254" /></a></p>
<p style="text-align: justify">Full visit graphic speaks for itself, whatever the load, Zend Server with Page Cache and Flat Catalog make a big difference.</p>
<p style="text-align: justify">Comparing a 1.3 with flat catalog with a the same configuration but with a Zend Community installed instead of just APC, our server yield up to 15% more performances, just using a free edition of ZS.</p>
<p style="text-align: justify">If we use a full Zend server (the licensed one including the page cache) on this 1.3 flat catalog, our server goes up to 30% more performances!</p>
<p>Mod PHP + APC -&gt; ZS: +15%<br />
Mod PHP + APC -&gt; ZS licensed edition: +30%</p>
<h1>5. Response time</h1>
<p><BR></p>
<h2>Homepage / 80k products</h2>
<p align="center"><a rel="attachment wp-att-959" href="http://www.wikigento.com/?attachment_id=959"><img class="aligncenter size-medium wp-image-959" title="Graph5 : load time !" src="http://www.wikigento.com/wp-content/uploads/2009/07/graph5-500x244.jpg" alt="Graph5 : load time !" width="500" height="244" /></a></p>
<p style="text-align: justify">This graph show response time on the homepage measured during a load. No match on this test, under a good load, ZS, community or licensed edition, gives up a 35% boost in the load time, good to take.</p>
<h2>Full visit / 80k products</h2>
<p style="text-align: center"><a rel="attachment wp-att-961" href="http://www.wikigento.com/?attachment_id=961"><img class="size-medium wp-image-961 aligncenter" title="Graph6 : full navigation load time comparison chart" src="http://www.wikigento.com/wp-content/uploads/2009/07/graph61-500x244.jpg" alt="Graph6 : full navigation load time comparison chart" width="500" height="244" /></a></p>
<p style="text-align: justify">Page Cache provides a better response time over a full visit of the site, even under very heavy load. As the difference remains thin, I would conclude it to be identical in that condition. However, the benefits of the page cache under a standard load remains a must have. Once again, a 35% win is to be considered as a reference value under a good load whether you are using a community or licensed version.</p>
<p style="text-align: justify">Under medium or light load, the page cache is giving a lot more power than the community edition can do. This strange result is probably mainly due to the page cache mechanism which prove to be not that efficient under heavy load because the system is using its resource in a different way.<br />
We didn't had time to check if it was a False cache sharing effect on L2 or L3 processor cache or a Linux or ZS issue but the test has been runned several times yielding the same results.</p>
<p style="text-align: justify">So keep in mind that the benefits of the ZS Page cache mechanism is going to be less and less active as the server load gets high. Under a usual load, a reasonable load lets say, the Page Cache algorithm gives a nice boost to the loading time, driving it down for ~40%.</p>
<h1>6. Additional technical details about the tests</h1>
<p><BR></p>
<h2>Sample data</h2>
<p>All tests were run with generated sample data (provided by Varien)</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="text-align: center" width="213" valign="top">Parameter</td>
<td style="text-align: center" width="213" valign="top">10k</td>
<td style="text-align: center" width="213" valign="top">80k</td>
</tr>
<tr>
<td style="text-align: center" width="213" valign="top">Categories</td>
<td style="text-align: center" width="213" valign="top">251</td>
<td style="text-align: center" width="213" valign="top">1576</td>
</tr>
<tr>
<td style="text-align: center" width="213" valign="top">Category * product associations</td>
<td style="text-align: center" width="213" valign="top">24690</td>
<td style="text-align: center" width="213" valign="top">202743</td>
</tr>
<tr>
<td style="text-align: center" width="213" valign="top">Products</td>
<td style="text-align: center" width="213" valign="top">10001</td>
<td style="text-align: center" width="213" valign="top">78994</td>
</tr>
</tbody>
</table>
<h2>Description of the tests</h2>
<h3>Main page test</h3>
<p>Each concurrent thread loads the main page, without storing the cookies to simulate simultaneous users.</p>
<h3>Full visit test</h3>
<p style="text-align: justify">We have a list requests based on a visit done with a real browser. Each concurrent thread loads each item one after another as fast as possible, and restarts after deleting all its cookies. This simulates simultaneous users, except that simultaneous.</p>
<p>List of requested pages for the 80k database (with POST information when it applies):</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p938code1'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p9381"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
</pre></td><td class="code" id="p938code1"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;</span>span <span style="color: #007800;">style</span>=<span style="color: #ff0000;">&quot;font-size: xx-small;&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>favicon.ico<span style="color: #000000; font-weight: bold;">&lt;/</span>span<span style="color: #000000; font-weight: bold;">&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;</span>span <span style="color: #007800;">style</span>=<span style="color: #ff0000;">&quot;font-size: xx-small;&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>js<span style="color: #000000; font-weight: bold;">/</span>index.php?<span style="color: #007800;">c</span>=auto<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #007800;">f</span>=,prototype<span style="color: #000000; font-weight: bold;">/</span>prototype.js,prototype<span style="color: #000000; font-weight: bold;">/</span>validation.js,scriptaculous<span style="color: #000000; font-weight: bold;">/</span>builder.js,scriptaculous<span style="color: #000000; font-weight: bold;">/</span>effects.js,scriptaculous<span style="color: #000000; font-weight: bold;">/</span>dragdrop.js,scriptaculous<span style="color: #000000; font-weight: bold;">/</span>controls.js,scriptaculous<span style="color: #000000; font-weight: bold;">/</span>slider.js,varien<span style="color: #000000; font-weight: bold;">/</span>js.js,varien<span style="color: #000000; font-weight: bold;">/</span>form.js,varien<span style="color: #000000; font-weight: bold;">/</span>menu.js,mage<span style="color: #000000; font-weight: bold;">/</span>translate.js,mage<span style="color: #000000; font-weight: bold;">/</span>cookies.js
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>css<span style="color: #000000; font-weight: bold;">/</span>reset.css
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>css<span style="color: #000000; font-weight: bold;">/</span>menu.css
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>css<span style="color: #000000; font-weight: bold;">/</span>print.css
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>css<span style="color: #000000; font-weight: bold;">/</span>clears.css
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>css<span style="color: #000000; font-weight: bold;">/</span>boxes.css
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>body_bg.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>logo.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>btn_mini_search.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>mini_search_bg.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>nav_bg.jpg
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>nav_divider.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>main_container_bg.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>shop_access_pipe.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>base_mini_head_bg.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span>col_left_callout.jpg
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>header_top_container_bg.jpg
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>icon_table.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>icon_newspaper.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>icon_tag_green.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>icon_basket.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span>col_right_callout.jpg
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>footer_info_separator.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>main_bg.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>category-<span style="color: #000000;">736</span>
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>layered_nav_head_bg.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>layered_nav_narrowed_category_heading.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>narrow_by_set.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>narrow_by_dd_bg.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>pager_arrow_right.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>sort_asc_arrow.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span>1small_image<span style="color: #000000; font-weight: bold;">/</span>135x135<span style="color: #000000; font-weight: bold;">/</span>5e06319eda06f020e43594a9c230972d<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>placeholder<span style="color: #000000; font-weight: bold;">/</span>small_image.jpg
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>pager_bg.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>category-<span style="color: #000000;">736</span>?<span style="color: #007800;">attribute_864</span>=<span style="color: #000000;">306</span>
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>list_remove_btn.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>narrow_category_bg.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>narrow_by_li_by.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>category-<span style="color: #000000;">736</span>?<span style="color: #007800;">attribute_864</span>=<span style="color: #000000;">306</span><span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #007800;">price</span>=<span style="color: #000000;">3</span><span style="color: #000000; font-weight: bold;">%</span>2C100
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>category-<span style="color: #000000;">736</span>?<span style="color: #007800;">attribute_864</span>=<span style="color: #000000;">306</span><span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #007800;">price</span>=<span style="color: #000000;">3</span><span style="color: #000000; font-weight: bold;">%</span>2C100<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #007800;">p</span>=<span style="color: #000000;">2</span>
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>pager_arrow_left.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>category-<span style="color: #000000;">736</span>?<span style="color: #007800;">attribute_864</span>=<span style="color: #000000;">306</span><span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #007800;">price</span>=<span style="color: #000000;">3</span><span style="color: #000000; font-weight: bold;">%</span>2C100<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #007800;">p</span>=<span style="color: #000000;">3</span>
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>category-<span style="color: #000000;">736</span><span style="color: #000000; font-weight: bold;">/</span>gtx14049.html
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>js<span style="color: #000000; font-weight: bold;">/</span>index.php?<span style="color: #007800;">c</span>=auto<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #007800;">f</span>=,prototype<span style="color: #000000; font-weight: bold;">/</span>prototype.js,prototype<span style="color: #000000; font-weight: bold;">/</span>validation.js,scriptaculous<span style="color: #000000; font-weight: bold;">/</span>builder.js,scriptaculous<span style="color: #000000; font-weight: bold;">/</span>effects.js,scriptaculous<span style="color: #000000; font-weight: bold;">/</span>dragdrop.js,scriptaculous<span style="color: #000000; font-weight: bold;">/</span>controls.js,scriptaculous<span style="color: #000000; font-weight: bold;">/</span>slider.js,varien<span style="color: #000000; font-weight: bold;">/</span>js.js,varien<span style="color: #000000; font-weight: bold;">/</span>form.js,varien<span style="color: #000000; font-weight: bold;">/</span>menu.js,mage<span style="color: #000000; font-weight: bold;">/</span>translate.js,mage<span style="color: #000000; font-weight: bold;">/</span>cookies.js,varien<span style="color: #000000; font-weight: bold;">/</span>product.js,calendar<span style="color: #000000; font-weight: bold;">/</span>calendar.js,calendar<span style="color: #000000; font-weight: bold;">/</span>lang<span style="color: #000000; font-weight: bold;">/</span>calendar-en.js,calendar<span style="color: #000000; font-weight: bold;">/</span>calendar-setup.js
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>js<span style="color: #000000; font-weight: bold;">/</span>calendar<span style="color: #000000; font-weight: bold;">/</span>calendar-win2k-<span style="color: #000000;">1</span>.css
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">/</span>image<span style="color: #000000; font-weight: bold;">/</span>265x<span style="color: #000000; font-weight: bold;">/</span>5e06319eda06f020e43594a9c230972d<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>placeholder<span style="color: #000000; font-weight: bold;">/</span>image.jpg
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>product_essential_bg.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>product_collateral_bg.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>dotted_divider.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>icon_tag_add.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>checkout<span style="color: #000000; font-weight: bold;">/</span>cart<span style="color: #000000; font-weight: bold;">/</span>add<span style="color: #000000; font-weight: bold;">/</span>uenc<span style="color: #000000; font-weight: bold;">/</span>aHR0cDovL3Rlc3RtMTIudGVzdC5uYnMtc3lzdGVtLmNvbS9jYXRlZ29yeS03MzYvZ3R4MTQwNDkuaHRtbD9fX19TSUQ9VQ,,<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">67952</span><span style="color: #000000; font-weight: bold;">/</span> POST <span style="color: #007800;">product</span>=<span style="color: #000000;">67952</span><span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #007800;">related_product</span>=<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #007800;">qty</span>=
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>checkout<span style="color: #000000; font-weight: bold;">/</span>cart<span style="color: #000000; font-weight: bold;">/</span>
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>js<span style="color: #000000; font-weight: bold;">/</span>index.php?<span style="color: #007800;">c</span>=auto<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #007800;">f</span>=,prototype<span style="color: #000000; font-weight: bold;">/</span>prototype.js,prototype<span style="color: #000000; font-weight: bold;">/</span>validation.js,scriptaculous<span style="color: #000000; font-weight: bold;">/</span>builder.js,scriptaculous<span style="color: #000000; font-weight: bold;">/</span>effects.js,scriptaculous<span style="color: #000000; font-weight: bold;">/</span>dragdrop.js,scriptaculous<span style="color: #000000; font-weight: bold;">/</span>controls.js,scriptaculous<span style="color: #000000; font-weight: bold;">/</span>slider.js,varien<span style="color: #000000; font-weight: bold;">/</span>js.js,varien<span style="color: #000000; font-weight: bold;">/</span>form.js,varien<span style="color: #000000; font-weight: bold;">/</span>menu.js,mage<span style="color: #000000; font-weight: bold;">/</span>translate.js,mage<span style="color: #000000; font-weight: bold;">/</span>cookies.js,varien<span style="color: #000000; font-weight: bold;">/</span>weee.js
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>btn_proceed_to_checkout.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>btn_trash.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">/</span>thumbnail<span style="color: #000000; font-weight: bold;">/</span>75x<span style="color: #000000; font-weight: bold;">/</span>5e06319eda06f020e43594a9c230972d<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>placeholder<span style="color: #000000; font-weight: bold;">/</span>thumbnail.jpg
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>success_msg_icon.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>icon_asterick.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>icon_lorry.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>data_table_th_bg.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>base_mini_actions_bg.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>category-<span style="color: #000000;">736</span><span style="color: #000000; font-weight: bold;">/</span>gtx14049.html
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">/</span>thumbnail<span style="color: #000000; font-weight: bold;">/</span>50x50<span style="color: #000000; font-weight: bold;">/</span>5e06319eda06f020e43594a9c230972d<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>placeholder<span style="color: #000000; font-weight: bold;">/</span>thumbnail.jpg
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>category-<span style="color: #000000;">1497</span>
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">/</span>small_image<span style="color: #000000; font-weight: bold;">/</span>135x135<span style="color: #000000; font-weight: bold;">/</span>5e06319eda06f020e43594a9c230972d<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>placeholder<span style="color: #000000; font-weight: bold;">/</span>small_image.jpg
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>category-<span style="color: #000000;">1497</span>?<span style="color: #007800;">attribute_864</span>=<span style="color: #000000;">305</span>
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>category-<span style="color: #000000;">1497</span><span style="color: #000000; font-weight: bold;">/</span>npt25-a.html
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">/</span>image<span style="color: #000000; font-weight: bold;">/</span>265x<span style="color: #000000; font-weight: bold;">/</span>5e06319eda06f020e43594a9c230972d<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>placeholder<span style="color: #000000; font-weight: bold;">/</span>image.jpg
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>checkout<span style="color: #000000; font-weight: bold;">/</span>cart<span style="color: #000000; font-weight: bold;">/</span>add<span style="color: #000000; font-weight: bold;">/</span>uenc<span style="color: #000000; font-weight: bold;">/</span>aHR0cDovL3Rlc3RtMTIudGVzdC5uYnMtc3lzdGVtLmNvbS9jYXRlZ29yeS0xNDk3L25wdDI1LWEuaHRtbD9fX19TSUQ9VQ,,<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">25870</span><span style="color: #000000; font-weight: bold;">/</span> POST <span style="color: #007800;">product</span>=<span style="color: #000000;">25870</span><span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #007800;">related_product</span>=<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #007800;">qty</span>=
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>checkout<span style="color: #000000; font-weight: bold;">/</span>cart<span style="color: #000000; font-weight: bold;">/</span>
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">/</span>thumbnail<span style="color: #000000; font-weight: bold;">/</span>75x<span style="color: #000000; font-weight: bold;">/</span>5e06319eda06f020e43594a9c230972d<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>placeholder<span style="color: #000000; font-weight: bold;">/</span>thumbnail.jpg
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>category-<span style="color: #000000;">3</span>
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">/</span>thumbnail<span style="color: #000000; font-weight: bold;">/</span>50x50<span style="color: #000000; font-weight: bold;">/</span>5e06319eda06f020e43594a9c230972d<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>placeholder<span style="color: #000000; font-weight: bold;">/</span>thumbnail.jpg
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>category-<span style="color: #000000;">3</span>?<span style="color: #007800;">price</span>=<span style="color: #000000;">4</span><span style="color: #000000; font-weight: bold;">%</span>2C1000
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>checkout<span style="color: #000000; font-weight: bold;">/</span>cart<span style="color: #000000; font-weight: bold;">/</span>add<span style="color: #000000; font-weight: bold;">/</span>uenc<span style="color: #000000; font-weight: bold;">/</span>aHR0cDovL3Rlc3RtMTIudGVzdC5uYnMtc3lzdGVtLmNvbS9jYXRlZ29yeS0zP3ByaWNlPTQlMkMxMDAwJmNhdD0zNyZfX19TSUQ9VQ,,<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">4642</span><span style="color: #000000; font-weight: bold;">/</span>
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>checkout<span style="color: #000000; font-weight: bold;">/</span>cart<span style="color: #000000; font-weight: bold;">/</span>
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>checkout<span style="color: #000000; font-weight: bold;">/</span>onepage<span style="color: #000000; font-weight: bold;">/</span>
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>js<span style="color: #000000; font-weight: bold;">/</span>varien<span style="color: #000000; font-weight: bold;">/</span>accordion.js
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>js<span style="color: #000000; font-weight: bold;">/</span>opcheckout.js
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>opc_off_head_bg.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>opc-ajax-loader.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>btn_window_close.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>cvv.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>multi_address_box_bg.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>skin<span style="color: #000000; font-weight: bold;">/</span>frontend<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>default<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>btn_place_order.gif
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>catalogsearch<span style="color: #000000; font-weight: bold;">/</span>ajax<span style="color: #000000; font-weight: bold;">/</span>suggest<span style="color: #000000; font-weight: bold;">/</span> POST <span style="color: #007800;">q</span>=<span style="color: #000000;">45</span>
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>catalogsearch<span style="color: #000000; font-weight: bold;">/</span>ajax<span style="color: #000000; font-weight: bold;">/</span>suggest<span style="color: #000000; font-weight: bold;">/</span> POST <span style="color: #007800;">q</span>=<span style="color: #000000;">456</span>
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>catalogsearch<span style="color: #000000; font-weight: bold;">/</span>result<span style="color: #000000; font-weight: bold;">/</span>?<span style="color: #007800;">q</span>=<span style="color: #000000;">456</span><span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #007800;">x</span>=<span style="color: #000000;">17</span><span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #007800;">y</span>=<span style="color: #000000;">8</span>
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">/</span>small_image<span style="color: #000000; font-weight: bold;">/</span>135x135<span style="color: #000000; font-weight: bold;">/</span>5e06319eda06f020e43594a9c230972d<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>placeholder<span style="color: #000000; font-weight: bold;">/</span>small_image.jpg
http:<span style="color: #000000; font-weight: bold;">//</span>test80k<span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">/</span>thumbnail<span style="color: #000000; font-weight: bold;">/</span>50x50<span style="color: #000000; font-weight: bold;">/</span>5e06319eda06f020e43594a9c230972d<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>catalog<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span>placeholder<span style="color: #000000; font-weight: bold;">/</span>thumbnail.jpg<span style="color: #000000; font-weight: bold;">&lt;/</span>span<span style="color: #000000; font-weight: bold;">&gt;</span></pre></td></tr></table></div>

<p><BR><br />
<h1>7. Things to test in the next benchmark campaign</h1>
<p><BR></p>
<h2>Mage Compiler</h2>
<p>When running all those tests, 1.3.1.1 version including the Mage optimizer was about to be released and an immediate 1.3.1.2 version followed and we didn't had time to include some tests around this precise point. Let's just consider the fact that this mechanism is mainly made to lower I/O jobs by "compiling" the libraries files all in one or two includes only. If your servers were already using mainly their RAM to work, the performances increase will not be that valuable. But if your servers where low on RAM or using mainly their disks, you should feel confident with using this option which can do great good to your performances!</p>
<h2>Nginx</h2>
<p>We didn't had the required time to consolidate the results involving Nginx + PHP tests. This solution ranked almost every time between Magento 1.3 + FC and Magento 1.3 + Zend server (without Page cache). So this combination yield average performances, not as sharp as a Magento 1.3 + Zend server or any more advanced combination.</p>
<h2>More "customed" visits</h2>
<p>We have used a scenario involving each time a research in the search bar of the website and some "standard" behaviors. A more precise test can be run replaying some real traffic pumped up from apache log on a real site, the customer's behaviors being more realistic even if our scenario was as logical as possible.</p>
<h1>8. Conclusion</h1>
<p><BR><br />
First, let me say that no electrons were armed or injured during these benchmarks. Perhaps one or two CTO were put under constraint and continuous coffee perfusions but all of this was intend for the greater good of E-commerce!</p>
<p>If you wish a more professional conclusion, let's say that using ZS community edition will only do you good and really can replace APC.</p>
<p>If using the licensed version, the Page cache is very efficient (under reasonable load of the servers) and can help using ~25% less machines to achieve similar hosting capacities. If your servers are billed in a "managed hosting" way, having one or two less servers billed per month can make a good difference in the budget.</p>
<p>About Zend Server : this software has many other great functionalities and this paper is only consider the "performances" issues, just pay a visit to Zend Website for a far more complete overview of the product.</p>
<p>Last but not least, creating a server with all optimizations and best practices, based on an a dual AMD 2376 with 8 Go of RAM and using ZS and page cache, you can try to reach up to ~40 000 unique visitors a day corresponding to ~2 500 Magento simultaneous session at maximum load. (if database is separated on a different server and you activate a reverse proxy like Squid or Varnish above your front web servers)<br />
This estimation is deeply linked to the website complexity and user standard behavior but these figures are given for a "standard" site and use, you can usually also expect a ~2 seconds loading time on the homepage.</p>
<p>If we had to sum up a quick dirty, average table of the performances, without any details, we would give that:<a rel="attachment wp-att-981" href="http://www.wikigento.com/?attachment_id=981"><img class="aligncenter size-full wp-image-981" title="graph71" src="http://www.wikigento.com/wp-content/uploads/2009/07/graph71.jpg" alt="graph71" width="259" height="100" /></a></p>
<p>© June 2009, NBS Team,</p>
<p><a href="mailto:rene.amirkhanian@nbs-system.com">René Amirkhanian</a>, <a href="mailto:adrien.urban@nbs-system.com">Adrien Urban</a>, <a href="mailto:philippe.humeau@nbs-system.com">Philippe Humeau</a>,<br />
you can visit us here: <a href="http://www.nbs-system.com/">www.nbs-system.com</a><br />
and reach us at: <a href="mailto:contact@nbs-system.com">contact@nbs-system.com</a> for any comments or corrections (and yes, we do hosting <img class="superemotions" title="Big Grin" alt="Big Grin" border="0" src="http://www.wikigento.com/wp-includes/images/smilies/icon_biggrin.gif" />)</p>
<h1>9. Creative Commons</h1>
<p><BR></p>
<p style="text-align: justify;">This document is released under the creative common license "Attribution-Noncommercial-Share Alike 3.0". Only three companies (NBS System, Zend and Varien) are allowed to use it for commercial purposes.</p>
<p><a rel="attachment wp-att-939" href="http://www.wikigento.com/?attachment_id=939"><img class="aligncenter size-full wp-image-939" title="cc-logo" src="http://www.wikigento.com/wp-content/uploads/2009/07/cc-logo.jpg" alt="cc-logo" width="115" height="40" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wikigento.com/test-bench/magento-zend-server-the-benchmarks/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Avant de poster les optimisations, parlons mesures !</title>
		<link>http://www.wikigento.com/test-bench/avant-de-poster-les-optimisations-parlons-mesures/</link>
		<comments>http://www.wikigento.com/test-bench/avant-de-poster-les-optimisations-parlons-mesures/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 09:10:28 +0000</pubDate>
		<dc:creator>Philippe Humeau</dc:creator>
				<category><![CDATA[Optimisation Système & Réseau]]></category>
		<category><![CDATA[Test / Bench]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[sessions magento]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://www.wikigento.com/?p=579</guid>
		<description><![CDATA[Avant toute chose, le Wiki a été mis à jour sur la partie dimensionnement des infrastructures Web. Ca se passe ici, si vous voyez des erreurs, n&#8217;hésitez pas à corriger. Alors, où en est-on sur le front des performances ? Eh bien si vous avez mis en place les optimisations qui sont recommandées, celles que [...]]]></description>
			<content:encoded><![CDATA[<p>Avant toute chose, le Wiki a été mis à jour sur la partie dimensionnement des infrastructures Web. Ca <a title="Dimensionnement de l'infrastructure Web" href="http://www.wikigento.com/wiki/index.php/Dimensionnement_de_l%27infrastructure_Web" target="_blank">se passe ici</a>, si vous voyez des erreurs, n&#8217;hésitez pas à corriger.</p>
<p>Alors, où en est-on sur le front des performances ?</p>
<p>Eh bien si vous avez mis en place les optimisations qui sont recommandées, celles que l&#8217;ont vous a expliqué chez Fragento ou ici, celles que l&#8217;on va vous exposer dans les prochains posts, bref si vous faites les choses correctement, vous pouvez atteindre de 200 à 800 sessions &laquo;&nbsp;Magento connectées&nbsp;&raquo; par core (coeur) de vos processeurs récents.</p>
<p>Mais avant de parler des optimisations en elles mêmes, il faut avoir des moyens de comparer, des unités et des repères communs. Je vous propose d&#8217;adopter des <em>&laquo;&nbsp;S.M.C</em>&nbsp;&raquo; comme unité.</p>
<h2>S.M.C ?</h2>
<p>En premier lieu &laquo;&nbsp;<strong>S</strong>essions <strong>M</strong>agento <strong>C</strong>onnectées&nbsp;&raquo;, qu&#8217;est-ce que cela peut bien représenter&#8230; ?</p>
<p>Déjà, on va réduire le nom à <strong>SMC</strong> pour éviter de trimbaler 5 lignes. On peut prendre de nombreux points de repères différents pour estimer la charge : les sessions apache, les Visiteurs Uniques (V.U) journaliers, horaires, le nombre de page vues, etc&#8230; Alors pourquoi choisir les SMC ?</p>
<p>Les SMC cela reste un indicateur pertinent car c&#8217;est Magento qui mesure cette valeur. Elle peut donc être utilisées dans d&#8217;autres contexte, pour faire d&#8217;autres calculs mais surtout elle est mesurée partout de la même façon, ce qui est important pour avoir des repères. Comme c&#8217;est Magento qui la mesure, on travail tous sur la même valeur.</p>
<p><span style="text-decoration: underline;">Comment les récupérer ? Avec une requête SQL en base de données tout simplement : </span><br />
<span style="color: #0000ff;">select count(*) from log_visitor where ADDTIME(utc_timestamp(), -1500) &lt;  last_visit_at;</span></p>
<p>Cela nous donne les sessions ayant eu une activité lors des 15 dernières minutes. C&#8217;est très proche de ce que l&#8217;on a dans le backoffice. Une dataquery et un script bash plus tard,</p>
<p><span style="text-decoration: underline;">On en fait un beau graphique </span><span style="text-decoration: underline;">pour les clients </span><span style="text-decoration: underline;">dans Cacti ou avec RRD, MRTG etc&#8230; :</span><br />
<a rel="attachment wp-att-581" href="http://www.wikigento.com/?attachment_id=581"><img class="aligncenter size-full wp-image-581" title="Graph SMC" src="http://www.wikigento.com/wp-content/uploads/2009/03/ss-20090317114824.jpg" alt="Graph SMC" width="580" height="208" /></a><br />
L<span style="font-size: medium;"><span style="font-family: times new roman,times;">à, par exemple, on voit un mailing. Monté en charge progressive du nombre de SMC pour atteindre les 1200 vers 18H00. Ca se corrèle bien avec le graphique d&#8217;utilisation des cores :</span></span></p>
<p><span style="font-size: medium;"><span style="font-family: times new roman,times;"><a rel="attachment wp-att-582" href="http://www.wikigento.com/?attachment_id=582"><img class="size-full wp-image-582 aligncenter" title="Graph Core" src="http://www.wikigento.com/wp-content/uploads/2009/03/ss-20090317114859.jpg" alt="Graph Core" width="594" height="221" /></a></span></span></p>
<p><span style="font-size: medium;"><span style="font-family: times new roman,times;">On 4 cores utilisés pour 1200, donc 300 utilisateurs par core, en l&#8217;occurence ce sont des AMD Shanghai 2374 à 2,3 Ghz. Comme ce sont des quad cores, on utilise un processeur complet. Évidemment on ne peut pas se permettre d&#8217;avoir tous les cores à 100% donc les autres processus Linux tournent sur un autre core dédié d&#8217;un autre processeur. Coté base de données, ca glandouille gentillement :</span></span></p>
<pre><a rel="attachment wp-att-583" href="http://www.wikigento.com/?attachment_id=583"><img class="size-full wp-image-583 aligncenter" title="Graph core DB" src="http://www.wikigento.com/wp-content/uploads/2009/03/ss-20090317115009.jpg" alt="Graph core DB" width="590" height="215" /></a></pre>
<pre><span style="font-size: medium;"><span style="font-family: times new roman,times;">Il faut lire 0,2 core (200 milli). Ceci étant ce site spécifique sollicite peu la base de données donc ce n'est pas représentatif non plus.</span></span></pre>
<h2>Tester les performances, tests de charge &amp; Benchmark !</h2>
<p>De nombreux outils existent, qui mesurent différentes choses. En test de charge purs, on a par exemple Load runner, Apache bench, Opensta etc&#8230; Coupler tout cela à des analyseurs de code ou de requêtes SQL (comme la console Mysql enterprise par exemple) permet d&#8217;optimiser le code mais ce n&#8217;est pas le sujet de ce post et Gilles nous fera peut être un petit article là dessus.</p>
<p>Non, ce qui nous intéresse ici, c&#8217;est d&#8217;évaluer le nombre de SMC que l&#8217;on peut servir dans de bonnes conditions avec la plateforme que l&#8217;on aura préparé. Pour cela, load runner et Opensta sont de bons outils. Apache bench n&#8217;est pas très adapté sincèrement car son test est toujours le même, donc avec la chaine de cache, à la fin de ces 2000 itérations, il vous sort joyeusement 250 000 connectés <img src='http://www.wikigento.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Opensta permet de définir des scénarii de tests et d&#8217;en jouer plusieurs, de front, à suivre, plusieurs fois les mêmes etc&#8230; Le soft tourne sous Windows, il est gratuit et opensource. On peut <a href="http://prdownloads.sourceforge.net/opensta/ostaw32-x86-1404.msi?download" target="_blank">le trouver ici</a> et même s&#8217;il n&#8217;est plus entretenu, il fonctionne bien et fait le boulot demandé.</p>
<p>Le but ici n&#8217;est pas de faire un manuel ou un howto d&#8217;opensta mais globalement d&#8217;expliquer ce qui représente de bonnes circonstance de tests, tout au moins réaliste. Ce que je fais, en général, c&#8217;est que je demande à mes clients, c&#8217;est de réaliser entre vingt et trente scénarii classique de surf. On enregistre un très simple de la personne qui vient sur la home et se déconnecte, un autre ou il fait une recherche un autre ou il clique de produit en produit, etc&#8230; Le plus le mieux mais également, le plus logique le mieux !</p>
<p>Le scénario de connexion à la home puis déconnexion, on va le jouer 25% du temps, puis celui du parcours de produit 1, le 2 et aussi les recherches. On mixe le tout savamment et on demande à plusieurs scénarii de se jouer sur le site. Trois qui surf, des connexions déconnexions sur la home, deux recherches en même temps etc&#8230; A la fin, on regarde les performances affichées par l&#8217;interface d&#8217;Opensta et celles collectées dans Cacti. On corrèle les graphs, on analyse et on arrive à estimer la charge que peux tenir un système ! En laissant tourner les scénarii un moment, le graph sera réaliste et on saura dire combien de S.M.C peut faire tenir un core standard.</p>
<p>La suite est un jeu d&#8217;enfant, on prend le nombre de V.U prévu en pic, on déduit le nombre de S.M.C que l&#8217;on doit pouvoir encaisser et on divise par la performance unitaire d&#8217;un Core. On sait alors combien de core on doit mettre en place et donc combien de processeurs !</p>
<p>Bon si une bonne âme veut bien écrire un tuto/howto sur Opensta, je passe mon tour pour le moment et je vous laisse juste en compagnie de deux shoots d&#8217;écran, le modeler et le commander :</p>
<p><a rel="attachment wp-att-592" href="http://www.wikigento.com/?attachment_id=592"><img class="alignnone size-medium wp-image-592" title="opensta-commander" src="http://www.wikigento.com/wp-content/uploads/2009/03/opensta-commander-500x223.jpg" alt="opensta-commander" width="500" height="223" /></a></p>
<p>On définit son scénario dans le modeler ci-dessous, on planifie dans le commander ci-dessus, et on a un autre module qui collecte et affiche les statistiques.</p>
<p><a rel="attachment wp-att-593" href="http://www.wikigento.com/?attachment_id=593"><img class="alignnone size-medium wp-image-593" title="opensta-modeler" src="http://www.wikigento.com/wp-content/uploads/2009/03/opensta-modeler-500x339.jpg" alt="opensta-modeler" width="500" height="339" /></a></p>
<p>Et voila !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wikigento.com/test-bench/avant-de-poster-les-optimisations-parlons-mesures/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

