<?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>Be the signal &#187; web servers</title>
	<atom:link href="http://bethesignal.org/blog/tag/web-servers/feed/" rel="self" type="application/rss+xml" />
	<link>http://bethesignal.org</link>
	<description>where we&#039;re going, we don&#039;t need roads...</description>
	<lastBuildDate>Thu, 26 Jan 2012 05:52:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<atom:link rel='hub' href='http://bethesignal.org/?pushpress=hub'/>
		<item>
		<title>Replacing Apache with nginx for static file serving</title>
		<link>http://bethesignal.org/blog/2009/04/06/replacing-apache-with-nginx-for-static-file-serving/</link>
		<comments>http://bethesignal.org/blog/2009/04/06/replacing-apache-with-nginx-for-static-file-serving/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 14:31:47 +0000</pubDate>
		<dc:creator>Jeff Waugh</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[ncache]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[web servers]]></category>

		<guid isPermaLink="false">http://bethesignal.org/?p=1431</guid>
		<description><![CDATA[This chart represents the regular activity of an Apache server from Monday to Thursday &#8212; a massive spike of non-idle processes starting around lunch time &#8212; and then an eerily quiet Friday. No, it wasn&#8217;t a public holiday, it&#8217;s just &#8230; <a href="http://bethesignal.org/blog/2009/04/06/replacing-apache-with-nginx-for-static-file-serving/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This chart represents the regular activity of an Apache server from Monday to Thursday &#8212; a massive spike of non-idle processes starting around lunch time &#8212; and then an eerily quiet Friday. No, it wasn&#8217;t a public holiday, it&#8217;s just evidence of <em>win</em>. Notice the gaps late on the 2nd and early on the 3rd? Happy infrastructure hacking in the witching hours!</p>
<p><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-1434" title="nginx vs. apache: open/sending" src="/wp-content/uploads/2009/04/nginx-vs-apache-open.png" alt="nginx vs. apache: open/sending" width="481" height="179" /></p>
<p>The problem with Apache processes is that they&#8217;re big: they chug a <em>lot</em> of memory, and take a long time to get started. Sure, Apache includes a number of slightly more modern process models than the traditional prefork MPM, unfortunately (and predictably enough), PHP keeps us mired in the land of suckage. So when it comes to memory abuse, I was delighted with the results of putting nginx in front of Apache, and giving it complete responsibility for static files:</p>
<p><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-1433" title="nginx vs. apache: memory" src="/wp-content/uploads/2009/04/nginx-vs-apache-memory.png" alt="nginx vs. apache: memory" width="497" height="221" /></p>
<p>Reduced memory usage, increased capacity for OS level disk caching, and of course, consistency. Consistency wins every time. Any sysadmin who has had to react to a sudden change in usage patterns will grok the importance of consistency &#8212; after all, it&#8217;s not being slashdotted or dugg that will kill you, it&#8217;s the hardware and software configuration designed for your everyday load.</p>
<p>That&#8217;s all very good for Mr. Server Administrator, but nothing is truly measured until we understand the impact on users. Friday lunch time? Business as usual&#8230;</p>
<p><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-1435" title="nginx vs. apache: traffic" src="/wp-content/uploads/2009/04/nginx-vs-apache-traffic.png" alt="nginx vs. apache: traffic" width="497" height="193" /></p>
<p>&#8230; maaaaybe just a little quicker if they were paying attention. Not that you can tell from this chart. <img width='16' height='16' src='http://bethesignal.org/wp-content/plugins/tango-smilies/tango/face-wink.png' alt=';-)' class='wp-smiley' /> </p>
<p>So, I&#8217;m pretty happy with nginx sitting in front of Apache. It totally changes the performance characteristics of the server (and website!) for the better, while allowing me to fall back on somewhat more mature and extensive Apache features when I need to. For instance, nginx&#8217;s rewrite module is pretty good, but Apache&#8217;s mod_rewrite is truly the original and the best (read: most insane). Surprisingly, nginx doesn&#8217;t support old school CGI, but I suppose most of the cool kids using it are opting for better process models such as FastCGI and proxied application servers anyway.</p>
<p>The biggest win in this instance was the conversion of a caching mod_proxy frontend &#8212; lot of static files, inefficiently served by Apache &#8212; to the new, inbuilt caching module in nginx 0.7. Initially I had tried the apparently popular ncache &#8212; must be a lot of people talking about it hypothetically, methinks &#8212; but it is probably best described as an &#8220;out-of-tree design, configuration and implementation fail&#8221;. Once I sucked up the fear-of-trunk and tried the caching support in nginx 0.7, there was no looking back.</p>
<p>(Finally, a quick shout-out for <a href="http://collectd.org/">collectd</a> 4.6.2 and the relatively new collection3 web frontend for it&#8230; sadly, I switched to it after these charts were saved, so you don&#8217;t get to see the new hotness. Maybe you should try it on <em>your</em> server?)</p>
]]></content:encoded>
			<wfw:commentRss>http://bethesignal.org/blog/2009/04/06/replacing-apache-with-nginx-for-static-file-serving/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
	</channel>
</rss>

