<?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>Pheromone Lab &#187; performance</title>
	<atom:link href="http://lab.pheromone.ca/tag/performance/feed/" rel="self" type="application/rss+xml" />
	<link>http://lab.pheromone.ca</link>
	<description>Inspiration, Experimentation, Innovation</description>
	<lastBuildDate>Mon, 30 Jan 2012 23:56:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>A comparison of performance, UX and dev-friendliness of various webfonts services</title>
		<link>http://lab.pheromone.ca/2010/06/02/comparison-webfont-services/</link>
		<comments>http://lab.pheromone.ca/2010/06/02/comparison-webfont-services/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 21:04:45 +0000</pubDate>
		<dc:creator>Olivier Théreaux</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[UX – Experience Utilisateur]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[webfonts]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=393</guid>
		<description><![CDATA[<p>Recent technological progress has made the life of designers a little less miserable: with @font-face in CSS, Web Typography is no longer limited to a handful of choices. </p>
<p>The web is not print, however, and the embedding of nice typography seems to come with a few other issues: the first few site prototypes on which we worked with @font-face tended to be plagued with performance problems – a really big deal in our case, given that we manage high-traffic&#8230; <a href="http://lab.pheromone.ca/2010/06/02/comparison-webfont-services/" class="read_more">...</a></p>]]></description>
			<content:encoded><![CDATA[<p>Recent technological progress has made the life of designers a little less miserable: with @font-face in CSS, Web Typography is no longer limited to a handful of choices. </p>
<p>The web is not print, however, and the embedding of nice typography seems to come with a few other issues: the first few site prototypes on which we worked with @font-face tended to be plagued with performance problems – a really big deal in our case, given that we manage high-traffic sites. The User experience of the pages we had tested was sub-par: slow loading times, blocks of text “jumping” after the actual font gets loaded, etc. </p>
<p>And yet, webfont services are popping like mushrooms and seem rather popular. I decided to give four of them a look, to see how good – and how fast – their service was. </p>
<p>My <a href="http://ot.zoy.org/2010/06/fontface">test page</a>, based on <a href="http://www.fontsquirrel.com/webfont_comparison/">fontsquirrel&#8217;s webfont comparison page</a> loads the fonts from the 4 providers (unfortunately, fontdeck does not seem to offer the Cantarell fount, a common denominator between all other three services, hence the difference). The rest of my testing consists mostly of analysis of speed, HTTP headers and other tinkering through <a href="http://getfirebug.com/">firebug</a>.</p>
<table>
<tr>
<th title="Name of the service">Service</th>
<th title="Number of fonts available">Fonts</th>
<th title="Does this service require registration?">Need Login</th>
<th title="How does it work?">Approach</th>
<th title="Does the service let you download the fonts and server them from your own server?">Download</th>
<th title="Does the service offer hosted, online webfonts?">Hosting</th>
</tr>
<tr class="odd">
<td><a href="http://code.google.com/webfonts">Google Font Directory</a></td>
<td>18 (plus variants)</td>
<td>No. Fonts are Open-Source, too!</td>
<td>CSS</td>
<td>No (Open source fonts could be downloaded, but no tool or instruction given)</td>
<td>Yes</td>
</tr>
<tr>
<td><a href="http://www.fontsquirrel.com/" title="Font Squirrel | Handpicked free fonts for graphic designers with commercial-use licenses.">Font Squirrel</a></td>
<td>635 (<em>including</em> variants)</td>
<td>No. Free for personal use, some are Open Source</td>
<td>CSS</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr class="odd">
<td><a href="http://fontdeck.com/" title="Fontdeck: Real fonts for your website">Font Deck</a></td>
<td>81 (plus variants)</td>
<td>Yes. Includes a few free fonts.</td>
<td>CSS</td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<td><a href="http://typekit.com/fonts" title="Font Libraries | Typekit">Typekit</a></td>
<td>153 (plus variants)</td>
<td>Yes. Includes a few free fonts.</td>
<td>Javascript</td>
<td>No</td>
<td>Yes</td>
</tr>
</table>
<h3>Google Font Directory</h3>
<p><a href="http://code.google.com/webfonts">Google&#8217;s webfont solution</a> is &#8220;view source&#8221; friendly: one can copy-paste from another site and get the fonts working immediately. Their offering is still rather limited, but their site is no-nonsense, immediately usable, and does not require any signup, payment – indeed all the fonts provided are Open Source (distributed under <a href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=OFL">Open Font License</a>).</p>
<p>Google&#8217;s service is also pretty good with caching – their servers appropriately respond with a 304 not modified open a request, and they send proper Expires: and Last-Modified: HTTP Headers.</p>
<h3>Font Deck </h3>
<p>Setup with <a href="http://fontdeck.com/">Fontdeck</a> is relatively easy: one needs to register on their site, choose a few fonts, and get a piece of HTML and CSS code to use. While I ran into a silly UX issue and couldn&#8217;t find the code samples at some points (a case of bad whitespace and beyond-the-fold design), using the font deck web site is rather pleasant. </p>
<p>However, after setting up my test page by following all their instructions, I never managed to get the fonts to appear: the URIs given to me in the sample systematically resulted in “403 forbidden” responses. I could not test the performance of this solution yet.</p>
<h3>Font squirrel</h3>
<p>Font Squirrel is clearly different from the rest. Similar to the many foundry catalogs available for designers, it includes a really simple <a href="http://www.fontsquirrel.com/fontface/generator">wizard to create a font-face kit</a> from any (downloaded) font. Very geek friendly. This is also the only service that caters to site admins who want to host their fonts themselves, and it does not provide a hosted font-face service.</p>
<h3>Typekit</h3>
<p>One of the first service of the genre, <a href="http://typekit.com/fonts">Typekit</a> also requires you to register yourself and your site. Javascript-based. Really similar to font-deck (which I believe it predates), Typekit will let you browse fonts for your site, and will provide a javascript snippet to add to pages to embed the fonts.</p>
<p>However, after setting up my test page by following all their instructions, I had trouble getting the fonts to appear: the URIs given to me in the sample systematically resulted in a “404 Not Found” response. It took me a while to understand (DOH!) that I had to choose fonts, add them to my site&#8217;s collection THEN publish in order for the system to work. My bad, their UX is really decent and I should really have understood this faster. </p>
<p>This solution is actually quite nice, as it allows me to choose which weight and style I want to include in my kit &#8211; which can be a big win for file weight, and thus performance.</p>
<p>Caching-wise, Typekit also behaves nicely, with the same combination of “304 Not Modified” response, Expires: and Cache-Control: HTTP Headers seen in Google&#8217;s service. </p>
<p>Their caching policy is much less aggressive than Google&#8217;s, however: while Google sends a cache directive for 14 days (Cache-Control: private, max-age=1209600), Typekit sends one for 300 seconds. I assume the reason for this difference is that with Google, you link to each individual font (which change very rarely), while with Typekit you link to your kit, which you may tinker with a lot. In any case, a cache policy of 300 seconds (5 minutes) is rather likely to cover the average visit, so this short timeout should hopefully not have too much of an impact on your visitor&#8217;s experience. </p>
<p><img alt="Typekit logo" src="http://use.typekit.com/badges/default.gif" title="Typekit logo" class="alignleft" width="62" height="25" /> One thing I&#8217;m not a big fan of: the script Typekit gives you doesn&#8217;t just lets you embed fonts, it also adds a little Typekit logo on all your pages. <em>Not cool</em>. I assume that <a href="https://typekit.com/plans">paid customers</a> don&#8217;t get the pesky logo, but regardless, if a service is going to advertise itself on my site, I&#8217;d like to know in advance&#8230;</p>
<h3>Anything Else?</h3>
<p>Any other service you would like to see tested here? Any other indicator of performance or cost-effectiveness you would like to see in the table? Tell us in the comments and we&#8217;ll try to keep this page up to date.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/06/02/comparison-webfont-services/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Le Grand Club de RDS, améliorations</title>
		<link>http://lab.pheromone.ca/2009/11/04/le-grand-club-de-rds-ameliorations/</link>
		<comments>http://lab.pheromone.ca/2009/11/04/le-grand-club-de-rds-ameliorations/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 20:02:16 +0000</pubDate>
		<dc:creator>jfdumas</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[grandclub]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[rds]]></category>
		<category><![CDATA[social network]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=168</guid>
		<description><![CDATA[<p>Le projet groupes de Grand Club consiste plus ou moins en un clone des groupes de Facebook à la sauce sportive… Il sera mis en ligne graduellement dans les prochaines semaines.</p>
<p>En plus du projet Groupes plusieurs projets d&#8217;améliorations sont constamment en cours sur le Grand Club et nous permettent de l&#8217;améliorer à chaque semaine.  Voici en gros le travail qui a été fait dans les dernières semaines afin d&#8217;améliorer la stabilité et la performance du Grand Club face à&#8230; <a href="http://lab.pheromone.ca/2009/11/04/le-grand-club-de-rds-ameliorations/" class="read_more">...</a></p>]]></description>
			<content:encoded><![CDATA[<p>Le projet groupes de Grand Club consiste plus ou moins en un clone des groupes de Facebook à la sauce sportive… Il sera mis en ligne graduellement dans les prochaines semaines.</p>
<p>En plus du projet Groupes plusieurs projets d&#8217;améliorations sont constamment en cours sur le Grand Club et nous permettent de l&#8217;améliorer à chaque semaine.  Voici en gros le travail qui a été fait dans les dernières semaines afin d&#8217;améliorer la stabilité et la performance du Grand Club face à la demande toujours grandissante des usagers.</p>
<p><strong>Le language:</strong> <a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition 1.8.6</a><br />
La version &#8216;Enterprise&#8217; de Ruby permet d&#8217;améliorer les performances générale du language et de corriger certaines défaillance de celui-ci. Oui, nous pensons déjà à le changer pour Ruby Enterprise 1.8.7&#8230;.</p>
<p><strong>La Fondation:</strong> <a href="http://www.rubyonrails.org">Ruby On Rails</a><br />
Nous avons passé à la version de Rails de 2.1.0 à 2.2.2 et nous comptons encore la changer pour la version 2.3.4 afin d&#8217;améliorer encore la performance de Rails.</p>
<p><strong>Database Performance:</strong><br />
Plusieurs requêtes ont été optimisés. Notre façon de faire les requêtes avec Rails (ActiveRecords) a également été revue afin d&#8217;être plus optimal. </p>
<p><strong>Caching:</strong> <a href="http://www.squid-cache.org/">Squid</a><br />
Squid est un proxy permettant de cacher les images, les css et les javascripts.  Ceci nous permet de servir les pages plus rapidement.  Il est également prévu de se servir de memcache pour cacher les pages du Grand Club afin de les servir plus rapidement encore.</p>
<p><strong>Moteur de recherche:</strong> Caching, Ferret Vs Sphinx<br />
Nous avons changer la façon de faire les recherches lors de certaines recherches en modifiant et optimisant les requêtes. De plus, les résultats de recherches sont maintenant caché pendant un certains temps. Par le passé, nous avons expérimentés plusieurs problèmes avec l&#8217;instabilité du moteur de recherche Ferret. C&#8217;est pour cette raison qu&#8217;un projet nous permettant de tester et d&#8217;implanter Sphinx (un autre moteur de recherche) a été mis sur pied.  La dernière étape dans les tests sur Sphinx sera mise en place dans les prochaines semaines. Si les tests vont bien nous serons en mesure d&#8217;implanter ce nouveau moteur de recherche.</p>
<p><strong>Dark Release: </strong><br />
Le principe de Dark release nous vient de Facebook.  Il consiste à mettre en ligne graduellement des nouveaux features.  Cette technique nous permet de suivre plus facilement les réactions de l&#8217;application et des serveurs.  Une subite montée en charge dû à un nouveaux features est ainsi mieux contrôlé.  Ce mécanisme nous permet également de couper temporairement un feature afin de supporter une charge plus grande.  On pourrait par exemple couper le lifestream, lors de la journée des transactions afin d&#8217;avoir un gain en performance.</p>
<p>Ceux qui ont contribué à rendre tout cela possible <a href="http://twitter.com/benoitgoyette">Benoît</a>, <a href="http://twitter.com/marvalP">Martin</a>, <a href="http://twitter.com/nourami">Amirouche</a>, <a href="http://twitter.com/LouisAsselin">Louis</a>, Marc-Antoine, Ana, <a href="http://twitter.com/yvesroy">Yves</a>, <a href="http://twitter.com/seniorgregor">Sébastien</a>, <a href="http://twitter.com/dandesrosiers">Daniel</a> et moi-même <a href="http://twitter.com/jfdumas">Jean-François</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2009/11/04/le-grand-club-de-rds-ameliorations/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Skyrock, quite unknown platform</title>
		<link>http://lab.pheromone.ca/2009/10/19/skyrock-social-network/</link>
		<comments>http://lab.pheromone.ca/2009/10/19/skyrock-social-network/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 15:09:16 +0000</pubDate>
		<dc:creator>karl</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[france]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[parisweb]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[postgres]]></category>
		<category><![CDATA[rds]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[scalability]]></category>
		<category><![CDATA[skyrock]]></category>
		<category><![CDATA[social networks]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=137</guid>
		<description><![CDATA[<p><a href="http://www.paris-web.fr/2009/">ParisWeb 2009</a> is the <del datetime="2009-10-19T14:30:06+00:00">French speaking</del> <ins datetime="2009-10-19T14:30:06+00:00">european</ins> community event around Web technologies. This year, I gave a talk about <a href="http://www.slideshare.net/karlcow/http-pour-les-nafs-et-les-brutes">HTTP</a>, this not-so-known technology. Among the 400 conference attendees, there were 30 Web developers of <a href="http://www.skyrock.com/">skyrock</a> (The internal Web Team is around 50 persons including moderators, managers, etc).  This social network outside of the French speaking world is not very well known. Let&#8217;s start with a few details.</p>
<h2 id="skyrock-info">Skyrock Summary</h2>
<p><a href="http://en.wikipedia.org/wiki/Skyrock">Skyrock</a> has been created in December&#8230; <a href="http://lab.pheromone.ca/2009/10/19/skyrock-social-network/" class="read_more">...</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.paris-web.fr/2009/">ParisWeb 2009</a> is the <del datetime="2009-10-19T14:30:06+00:00">French speaking</del> <ins datetime="2009-10-19T14:30:06+00:00">european</ins> community event around Web technologies. This year, I gave a talk about <a href="http://www.slideshare.net/karlcow/http-pour-les-nafs-et-les-brutes">HTTP</a>, this not-so-known technology. Among the 400 conference attendees, there were 30 Web developers of <a href="http://www.skyrock.com/">skyrock</a> (The internal Web Team is around 50 persons including moderators, managers, etc).  This social network outside of the French speaking world is not very well known. Let&#8217;s start with a few details.</p>
<h2 id="skyrock-info">Skyrock Summary</h2>
<p><a href="http://en.wikipedia.org/wiki/Skyrock">Skyrock</a> has been created in December 2002 and is now the <strong>7th largest social network</strong> in the world. In July 2009, it was said to have <strong>26 millions blogs</strong>, 16.6 millions profiles, 650 millions of articles and almost <strong>4 billions of comments</strong>. In December 2007, the blogs brought more than <strong>15 millions euros in revenues</strong> according to its CEO <a href="http://en.wikipedia.org/wiki/Pierre_Bellanger">Pierre Bellanger</a>.</p>
<h2 id="skyrock-platform">Skyrock Platform</h2>
<p>The information is scarse about skyrock, but searching here and there, we can find a few details. In 2005, skyrock was <a href="http://ask.slashdot.org/comments.pl?sid=150769&#038;cid=12660154">serving</a> </p>
<blockquote><p>around 3 millions pages a day on two gigabit links. The balancing rules are quite complex since the content is splitted on multiple servers and SANs. We use software load balancers: Zeus ZXTM [zeus.com] on Gentoo Linux. The nice thing about software load balancers is that you can easily replace the hardware if it fails. Having a spare PC is way cheaper than a spare load balancer. We are very pleased with ZXTM so far. Very reliable, fast, and very flexible. It uses a PHP-like scripting language to process requests and you can really handle any specific backend architecture with that.</p>
</blockquote>
<p>and we can discover a bit <a href="http://ask.slashdot.org/comments.pl?sid=129288&#038;cid=10807635">more information from 2004</a></p>
<blockquote><p>We have a bunch of static servers for static HTML, CSS, images, etc. They run minimal Apache servers, designed for speed, with NPTL and the worker MPM. Non-forking servers like thttpd or lighttpd is also an option. The static servers are mainly old P3 machines, with only 512 Mb RAM.</p>
<p>Then, we have servers for PHP. The Apache they are running is huge (our web sites need a lot of modules), the hosts are dual 3 Ghz Xeon with 2 Gb RAM and there are some other specific tweaks.</p>
<p>Content differentiation is important. It&#8217;s a waste to spawn huge Apache process to serve static stuff, just because the same host should also be able to serve PHP. Also, tuning (esp. NFS) is very different for static and dynamic content. And as a specialized server often serves the same files, caching is more efficient.</p>
<p>We run Gentoo Linux on all web servers, plus one DragonFlyBSD (mostly for testing).</p>
<p>The same content differentiation is made for SQL server. One SQL server serves one sort of thing, so that caching is efficient. Also don&#8217;t forget that on x86, Linux and MySQL can hardly use more than 2 Gb of RAM. So with big tables, this is really annoying. We are switching SQL servers to Transtec Opteron-based servers for that.</p>
<p>On high traffic infrastructures, the I/O is often the bottleneck especially if you serve a lot of different content.</p>
<p>For our blog service, we had to buy a Storagetek disk array with 56 disks (fiber channel, 15k) in RAID 10. As NFS would introduce too much delay, we directly plugged two web servers to the controller of the disk array. These web servers are the NFS servers for the PHP servers, but they also directly serve the static content.</p>
<p>The access time of hard disk is really annoying. For shared data, but also for databases. We found that RAID 5 was way too slow (even with the high-end Storagetek/LSI controller) since we have about 1 write for 5 reads. So we had to switch everything to RAID 10. It really performs better, but it&#8217;s obviously more expensive.</p>
<p>Another bottleneck was the share of PHP sessions between all load-balanced PHP server. We first used a MySQL/InnoDB-based solution, but it poorly scaled. That&#8217;s why I had to write specific software : Sharedance http://sharedance.pureftpd.org/ [pureftpd.org] </p>
</blockquote>
<p>If you have more information about this platform, please share with us. It would be an excellent opportunity for an article on <a href="http://highscalability.com/">High Scalibility</a> blog.</p>
<p><strong>Update 2009-10-19</strong>: That was quick ;) <a href="http://devteam.skyrock.com/931963446-Architecture.html">information  from 2007</a> by the dev team.</p>
<blockquote><p>9 loadbalancers Zeus Layer 7 ZXTM: machines diverses;</p>
<p>50 frontaux Web Apache 1.3.x: bi dual-core, 6 Go de ram, PHP 5.2, Xcache, Nginx pour les élements statiques;</p>
<p>50 serveurs MySQL 5.0.x: bi dual-core, 16 Go de ram, 8 disques SAS RAID 10 73 Go, en réplication master/master;</p>
<p>30 serveurs Memcached 1.2.x: bi dual-core (complètement sous exploité actuellement :), 16 go de ram, 3 instances memcached de 4 Go par machine;</p>
<p>2 serveur de sessions sharedance: stockage tmpfs 6 go (on en utilise grosso modo la moitié), un en master, un en secours;</p>
<p>1 cluster de stockage Isilon: 40 nodes de 12 disques SATA pour le stockage; A coté, divers types de stockages encore un peu utilisés (principalement des restes d&#8217;avant Isilon), avec SAN Sata Transtec, SAN Fiber Chanel Transtec, SAN Fiber Chanel Storagtek, SCSI Interne, SATA Interne&#8230; Oui, on a essayé beaucoup de systèmes différents par le passé :-)</p>
<p>Le tout tourne sous Linux x86_64, généralement du debian avec nos paquets.</p>
</blockquote>
<h2 id="grandclub-platform">Le Grand Club Platform</h2>
<p>At Pheromone, we are developing a social network for <a href="http://www.rds.ca/">RDS</a>, <a href="http://legrandclub.rds.ca/">Le Grand Club</a>. It&#8217;s why we are always eager to learn about the features, tools and options that other sites have been using. The lead developer for this social network is <a href="http://www.pheromone.ca/propos/equipe/benoit-goyette">Benoit Goyette</a> (A Web developer team is working on it every day). The site runs on Ruby On Rails with postgres.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2009/10/19/skyrock-social-network/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

