<?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>UNIXy &#187; web server</title>
	<atom:link href="http://blog.unixy.net/tag/web-server/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.unixy.net</link>
	<description>Fully Managed Dedicated Servers</description>
	<lastBuildDate>Fri, 03 Feb 2012 17:37:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Death Match Benchmark &#8211; Web Servers Battle One Another</title>
		<link>http://blog.unixy.net/2011/06/death-match-benchmark-web-servers-battle-one-another/</link>
		<comments>http://blog.unixy.net/2011/06/death-match-benchmark-web-servers-battle-one-another/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 03:46:00 +0000</pubDate>
		<dc:creator>UNIXy</dc:creator>
				<category><![CDATA[Interesting]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[death match]]></category>
		<category><![CDATA[fastlayer]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[varnish]]></category>
		<category><![CDATA[web server]]></category>

		<guid isPermaLink="false">http://blog.unixy.net/?p=1301</guid>
		<description><![CDATA[Here is a post detailing an interesting setup of Web servers made to go against one another in real time. This could prove to be entertaining for benchmarkers or perhaps decisive for those who need an ultimate killer proof that their favorite Web server can kick some behind.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.unixy.net%2F2011%2F06%2Fdeath-match-benchmark-web-servers-battle-one-another%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.unixy.net%2F2011%2F06%2Fdeath-match-benchmark-web-servers-battle-one-another%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: left;">Here is a post detailing an interesting setup of <a title="Web server" href="http://www.unixy.net/advanced-hosting" target="_blank">Web servers</a> made to go against one another in real time. This could prove to be entertaining for benchmarkers or perhaps decisive for those who need an ultimate <em>killer</em> proof that their favorite Web server can kick some behind.</p>
<p>Definition of <a title="Server" href="http://www.unixy.net">server</a> Web benchmarking (according to Wikipedia):</p>
<blockquote><p>It is the process of estimating a web server performance in order to find if the server can serve sufficiently high workload [sic].</p></blockquote>
<p>In this article, I&#8217;m going to butcher this definition and depart from the tradition &#8211; a tad bit. Here are a some interesting questions that come to mind: What if the end goal is not to obtain measurements but to take a knock-out approach? What if we were to put three Web servers all against one another is a threesome match? Is the outcome of this death match meaningful? How do we select the winner? Switching gears forward a bit, could this death match approach be maliciously leveraged in a <a title="Botnet" href="http://en.wikipedia.org/wiki/Botnet" target="_blank">botnet</a> situation?</p>
<p><img class="aligncenter size-full wp-image-1331" title="Death Match Diagram" src="http://blog.unixy.net/wp-content/uploads/2011/06/dmdiag.png" alt="" width="404" height="306" /></p>
<p>Let&#8217;s dive right into the code! But first, let&#8217;s discuss the logic necessary to trigger, enable, and maintain a match until death occurs or an apparent draw ensues. The death match in this post is triggered via a single GET action from a regular browser and can be sent to any Web server (or all) that is participating in the fight. The trigger calls a server-side python script called <a title="Bench.py" href="http://www.unixy.net/files/bench.py" target="_blank">bench.py</a>, which in turns forks a threaded python program, called <em><a title="Benchlet.py" href="http://www.unixy.net/files/benchlet.py" target="_blank">benchlet.py</a></em>, that perpetuates the  match. Each Web server participating in the death match receives a GET request and then resonates another similar multi-threaded request against the other Web server. This back and forth exchange escalates the match further and further&#8230;until death occurs.</p>
<p>&nbsp;</p>
<p><a href="http://blog.unixy.net/wp-content/uploads/2011/06/bench.py_.png"><img class="aligncenter size-full wp-image-1314" title="Bench.py" src="http://blog.unixy.net/wp-content/uploads/2011/06/bench.py_.png" alt="" width="547" height="120" /></a></p>
<p>&nbsp;</p>
<p style="text-align: center;"><a href="http://blog.unixy.net/wp-content/uploads/2011/06/benchlet.py_2.png"><img class="aligncenter size-full wp-image-1317" title="Benchlet.py" src="http://blog.unixy.net/wp-content/uploads/2011/06/benchlet.py_2.png" alt="" width="350" height="304" /></a></p>
<p>&nbsp;</p>
<p>The following video illustrates the trigger action and an excerpt from the match.</p>
<p>&nbsp;</p>
<p><object width="640" height="390"><param name="movie" value="http://www.youtube.com/v/iZl2NSZomHA&amp;hl=en_US&amp;feature=player_embedded&amp;version=3" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed type="application/x-shockwave-flash" width="640" height="390" src="http://www.youtube.com/v/iZl2NSZomHA&amp;hl=en_US&amp;feature=player_embedded&amp;version=3&amp;rel=0" rel="0" allowfullscreen="true" allowscriptaccess="always"></embed></object></p>
<p>The mechanism used to trigger and maintain the match is written in python but it could be just about any server-side processing language like PHP or Ruby.</p>
<p><strong>About UNIXy</strong></p>
<p>UNIXy is a fully managed server and cluster services providers with a focus on high traffic Web sites. Server and cluster management is offered courtesy at not extra costs to their clients. They have been offering <a title="Varnish" href="http://www.unixy.net/varnish">Varnish</a> acceleration to their clients for more than three years. They have released the first c<a title="cPanel Varnish" href="http://www.unixy.net/varnish">Panel Varnish plugin</a> as well as spun a new startup, <a title="Fastlayer" href="http://fastlayer.com/">Fastlayer</a>, the on-demand HTTP accelerator for the <a title="Fastlayer for the cloud" href="http://fastlayer.com/">cloud</a>.</p>
<p>That&#8217;s all folks!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.unixy.net/2011/06/death-match-benchmark-web-servers-battle-one-another/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP built-in Web server for development</title>
		<link>http://blog.unixy.net/2011/03/php-built-in-web-server-for-development/</link>
		<comments>http://blog.unixy.net/2011/03/php-built-in-web-server-for-development/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 04:32:19 +0000</pubDate>
		<dc:creator>UNIXy</dc:creator>
				<category><![CDATA[Future]]></category>
		<category><![CDATA[Interesting]]></category>
		<category><![CDATA[built-in]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[start]]></category>
		<category><![CDATA[web server]]></category>

		<guid isPermaLink="false">http://blog.unixy.net/?p=1234</guid>
		<description><![CDATA[A PHP built-in Web server has been proposed as a Request For Comment (RFC), which includes a patch to the PHP source code base. ]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.unixy.net%2F2011%2F03%2Fphp-built-in-web-server-for-development%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.unixy.net%2F2011%2F03%2Fphp-built-in-web-server-for-development%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>A <a href="http://wiki.php.net/rfc/builtinwebserver">PHP built-in Web server</a> has been proposed as a Request For Comment (RFC), which includes a patch to the PHP source code base. If the PHP maintainers decide to move forward with the proposal, we&#8217;d soon see an embedded Web server shipping with PHP CLI. Here&#8217;s how one would start and run the Web server:</p>
<blockquote><p>php -S localhost:8000<br />
Server is listening on localhost:8000&#8230; Press CTRL-C to quit.<br />
[Thu Mar  3 05:42:06 2011] ::1:56258: /<br />
[Thu Mar  3 05:42:06 2011] ::1:56259: /?=PHPE9568F34-D428-11d2-A769-00AA001ACF42<br />
[Thu Mar  3 05:42:06 2011] ::1:56260: /?=PHPE9568F35-D428-11d2-A769-00AA001ACF42</p></blockquote>
<p>In a way, it&#8217;s similar to how one would start the Django or web.py development server. Interesting patch&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.unixy.net/2011/03/php-built-in-web-server-for-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3-state throttle Web server</title>
		<link>http://blog.unixy.net/2010/11/3-state-throttle-web-server/</link>
		<comments>http://blog.unixy.net/2010/11/3-state-throttle-web-server/#comments</comments>
		<pubDate>Sat, 06 Nov 2010 21:05:27 +0000</pubDate>
		<dc:creator>UNIXy</dc:creator>
				<category><![CDATA[Challenge]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[3-state server]]></category>
		<category><![CDATA[adaptable server]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[dugg]]></category>
		<category><![CDATA[managed server]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[slashdotted]]></category>
		<category><![CDATA[varnish]]></category>
		<category><![CDATA[web server]]></category>

		<guid isPermaLink="false">http://blog.unixy.net/?p=798</guid>
		<description><![CDATA[While we are in the business of providing managed server and cluster services, some folks still keep it a heart to manage their own dedicated server nodes. Incontestably, and however much you cherish your web servers, family always takes priority. In this post, we are going to cover a peculiar server configuration that can adapt to abnormal traffic without the server dropping down.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.unixy.net%2F2010%2F11%2F3-state-throttle-web-server%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.unixy.net%2F2010%2F11%2F3-state-throttle-web-server%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Update (2011-03-14): UNIXy has released the first &#038; only <a href="http://www.unixy.net/varnish">cPanel Varnish</a> Plugin. The plugin installs, configures, and makes it very easy to manage Varnish via WHM. The plugin is fully integrated with cPanel EasyApache, cPanel URLs, and everything else that makes a functional cPanel server. Read about it more here: <a href="http://www.unixy.net/varnish">http://www.unixy.net/varnish</a></p>
<p>While we are in the business of providing <a title="Managed server" href="http://www.unixy.net" target="_self">managed server</a> and <a title="Cluster Services" href="http://www.unixy.net/advanced-hosting">cluster services</a>, some folks still keep it a heart to manage their own <a title="dedicated server" href="http://www.unixy.net" target="_self">dedicated server</a> or <a title="VPS" href="http://www.unixy.net/vps-hosting" target="_self">vps</a> nodes. Incontestably, and however much you cherish your web servers, family always takes priority. In this post, we are going to cover a peculiar <a title="Server" href="http://www.unixy.net">server</a> configuration that can adapt to abnormal traffic without the server dropping down to its knees or you getting involved&#8230; at 3AM on new year&#8217;s eve.</p>
<p>The goal is to configure such server to be autonomous for weeks or months at a time without requiring your involvement. Based on observatory experience, we decided to develop a 3-state throttle mechanism where each state is triggered based on server vitals like load average (run queue depth).</p>
<div id="attachment_848" class="wp-caption aligncenter" style="width: 429px"><a href="http://blog.unixy.net/wp-content/uploads/2010/10/3-state.png"><img class="size-full wp-image-848" title="3-state throttle Web server" src="http://blog.unixy.net/wp-content/uploads/2010/10/3-state.png" alt="3-state throttle Web server" width="419" height="239" /></a><p class="wp-caption-text">3-state throttle Web server</p></div>
<p>Let&#8217;s lay down the requirements and goals. We want our shiny adaptable server to be able to:</p>
<ol>
<li><strong>graciously handle <a title="C10K Problem" href="http://en.wikipedia.org/wiki/C10k_problem" target="_blank">C10K</a></strong><strong> challenges</strong></li>
<li><strong>handle a Slashdot / Digg effect without dropping off the net</strong></li>
<li><strong>change operating state and adapt to the traffic load</strong></li>
</ol>
<p><strong>Background</strong></p>
<p>Before we delve into the specifics, we&#8217;ll need to cover some important aspects of high performance web servers. All web servers, at least the ones worthy to be called as such, must implement the standards defined in RFC2616. What differentiates these web servers, however, is their feature set and their ability to manage large sets of concurrent connections. More specifically, they need to be able to handle the C10K problem gracefully. At least that&#8217;s what matters the most to us in this article.</p>
<p>So what is this C10K problem? C10K is a condensed term coined to mean 10000 concurrent clients. A Web server that solves the C10K problem should be able to handle much more than 10000 concurrent connections transferring small-size files on a <a title="100TB data transfer on 1Gbps link for $500/Mo!" href="http://unixy.net/100tb-managed-server/" target="_self">1Gbps</a> internet connection using 1GB of memory without causing any noticeable slow down</p>
<p>At a first glance, the C10K challenge appears to be easily achievable. The truth of the matter, the implementation not only requires efficient programming but also a mastery of low level system API and system calls. We&#8217;re not going to cover the fine details here. But implementors that focus too much on looking good in benchmarks end up building software that performs poorly in the real world. As a matter of fact, such systems have little practicality in this new hip Web world.</p>
<p>In this new hip online world, serving static files represent a very tiny fraction of the work put forth by a Web server. Server side processing accounts for the majority of the effort. So now not only do we expect a Web server to deliver relatively-simple static objects at sub milisecond speeds but also hold it accountable for the time it takes to complete server-side request. Server-side requests could be anything from PHP, Perl, to Python and Ruby. It doesn&#8217;t matter.</p>
<p><strong>Implementation</strong></p>
<p>How are we going to achieve this bullet proof Web server? We have been imposed the following requirement as far as Web server stack:</p>
<ul>
<li><strong>Linux 2.6.x</strong></li>
<li><strong>Apache 2.2.x</strong></li>
<li><strong>MySQL 5.x</strong></li>
<li><strong>PHP 5.2.x</strong></li>
</ul>
<p>While the requirement is reasonable we still need a secret sauce engine that will make a decision for us so we know how to throttle back and forth between the three states. We have very little flexibility in implementing this engine &#8220;inside&#8221; the LAMP stack as it means fiddling with the client&#8217;s environment. We needed a seamless dynamic way of throttling. That is no Web server restarts are permitted and the whole throttling action should take less than a 100ms.</p>
<p>We decided to leverage <a title="Varnish Cache Forum" href="http://www.varnish-cache.info">Varnish</a> Cache&#8217;s ability to load and compile a new set of configuration instructions on the fly. This essential function is not the only feature that sold us; the main advantage is that Varnish is a very capable caching engine and satisfies all three of our initial requirements (adaptability, state machine, C10K). We will load three Varnish configuration and these are as follow:</p>
<ul>
<li><strong>Light configuration:</strong></li>
</ul>
<p style="padding-left: 60px;">This configuration of Varnish caches static files only. We&#8217;re still letting Apache do a lot of leg work still and that is fine considering we&#8217;re getting low traffic in this state and a low impact on perceivable performance.</p>
<ul>
<li><strong>Moderate configuration:</strong></li>
</ul>
<p style="padding-left: 60px;">In this state, we enable caching but we respect cache control headers coming out of Apache and PHP. In other words, we cache only what we are told to cache. Sessions do not get cached in this state. Having too many &#8220;logged in&#8221; users could overpower the server. Hence, the need for a third state.</p>
<ul>
<li><strong>Heavy configuration:</strong></li>
</ul>
<p style="padding-left: 60px;">Enable caching but still respecting cache headers. Additionally, we enable per-user session caching (cookie based caching). There needs to be plenty of memory to handle as many users as possible since Varnish will be creating a cache entry for each registered user and accessed object.</p>
<p style="padding-left: 60px;">
<p><a href="http://blog.unixy.net/wp-content/uploads/2010/10/varnishsm.png"><img class="aligncenter size-full wp-image-853" title="State Diagram" src="http://blog.unixy.net/wp-content/uploads/2010/10/varnishsm.png" alt="State Diagram" width="616" height="394" /></a></p>
<p>The above diagram illustrates the &#8220;gear switching&#8221; logic of our engine. The pieces that we need to implement this logic are the following:</p>
<ol>
<li>The decision engine based on overall system vitals</li>
<li>The Varnish configuration loader</li>
<li>A daemon to tie it all together</li>
</ol>
<p>We picked Python as as tool to accomplish the above. We decided to leverage the <a title="Python Daemon" href="http://pypi.python.org/pypi/python-daemon/">python-daemon</a> package as well as the <a title="Python Varnish Manager" href="http://pypi.python.org/packages/source/p/python-varnish" target="_blank">python-varnish manager</a>. The former gives the daemon functionality as we intend to run the engine full time in the background. The latter is a simple wrapper around telnetlib and an interface to interact with Varnish&#8217;s admin port.</p>
<p style="text-align: center;"><a href="http://blog.unixy.net/wp-content/uploads/2010/11/3statetop.png"><img class="aligncenter size-full wp-image-939" title="3state Daemon" src="http://blog.unixy.net/wp-content/uploads/2010/11/3statetop.png" alt="" width="600" height="50" /></a></p>
<p>One of the tricky questions we needed answered revolves around the mechanism used to trigger a state transition. We have already decided on the load average being the metric we poll and base our decision upon. What remains to be determined is the value threshold that triggers the transition. A high load average does not always mean a stressed server nor does a low load average always mean an optimal server configuration.</p>
<p style="text-align: center;"><a href="http://blog.unixy.net/wp-content/uploads/2010/11/tstatecode.png"><img class="aligncenter size-full wp-image-947" title="3-state code" src="http://blog.unixy.net/wp-content/uploads/2010/11/tstatecode.png" alt="" width="550" height="400" /></a></p>
<p>As a rule of thumb, however, and based on experience, the load average is almost always reflective of resource capacity. We we are going to have to trust the kernel on this one. While we have covered the when, the how still needs some demonstration. As mentioned above, Varnish comes with a neat feature that allows it to load and use a new configuration file on the fly. It takes the new configuration, compiles it, and finally loads it up for execution. All of that without dropping a packet. Think of it as importing a python module at run-time. Here is a quick demo:</p>
<p><a href="http://blog.unixy.net/wp-content/uploads/2010/11/helpvarnish.png"><img class="aligncenter size-full wp-image-949" title="helpvarnish" src="http://blog.unixy.net/wp-content/uploads/2010/11/helpvarnish.png" alt="" width="600" height="250" /></a></p>
<p>Here is now where the on-the-fly loading of our config happens. Of course, with our Python daemon program the state transitions are triggered depending on the load:</p>
<p><a href="http://blog.unixy.net/wp-content/uploads/2010/11/loadvarnish.png"><img class="aligncenter size-full wp-image-950" title="Load the configs" src="http://blog.unixy.net/wp-content/uploads/2010/11/loadvarnish.png" alt="" width="600" height="350" /></a></p>
<p>To recap, we wrote a program, python daemon, that monitors the vitals of a dedicated server and then determines the next step to take. In this case, we have preloaded our caching engine with three configurations: light, moderate, and heavy. These configurations anticipate and handle different levels of traffic and load. Our python program makes use of any of the three configurations by loading them into Varnish.</p>
<p>That&#8217;s all folks! We hope you enjoyed this article.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.unixy.net/2010/11/3-state-throttle-web-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What is a Cluster?</title>
		<link>http://blog.unixy.net/2010/01/what-is-a-cluster/</link>
		<comments>http://blog.unixy.net/2010/01/what-is-a-cluster/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 03:06:54 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Challenge]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[cluster definition]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[dedicated cluster]]></category>
		<category><![CDATA[replication]]></category>
		<category><![CDATA[synchronization]]></category>
		<category><![CDATA[UNIXy]]></category>
		<category><![CDATA[web cluster]]></category>
		<category><![CDATA[web server]]></category>
		<category><![CDATA[what is a cluster]]></category>

		<guid isPermaLink="false">http://blog.unixy.net/?p=193</guid>
		<description><![CDATA[There are many types of clusters. The one I am going to cover in this post is a Web cluster. In other words, it is a cluster of several servers built to serve Web pages. It is a made up of Web servers, database servers, and file servers. You may ask, why not deploy only [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.unixy.net%2F2010%2F01%2Fwhat-is-a-cluster%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.unixy.net%2F2010%2F01%2Fwhat-is-a-cluster%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>There are many types of clusters. The one I am going to cover in this post is a Web cluster. In other words, it is a cluster of several servers built to serve Web pages. It is a made up of Web servers, database servers, and file servers. You may ask, why not deploy only one server and install the Web, database, and file server? There comes a time when one single server cannot sustain the increase in traffic. The high number of visitors exceeds the capacity of the server. Be it processor power, memory availability, disk <a title="What is IOPS?" href="http://blog.unixy.net/2010/01/what-is-iops" target="_blank">IOPS</a>, or network IO.</p>
<div id="attachment_244" class="wp-caption aligncenter" style="width: 216px"><a href="http://blog.unixy.net/wp-content/uploads/2010/01/cluster2.png"><img class="size-medium wp-image-244" title="Cluster" src="http://blog.unixy.net/wp-content/uploads/2010/01/cluster2-206x300.png" alt="Cluster" width="206" height="300" /></a><p class="wp-caption-text">Cluster</p></div>
<p>Building clusters is not for everyone. It is a complex engineering task. The complexity resides in making the whole, called cluster, accomplish the tasks efficiently and seamlessly. It becomes even more complex when one implements load balancing and database replication. Load balancing is the act of distributing tasks across two or more server with identical configurations. Database replication is the synchronization of database tables and meta data across two or more servers. Having two identical databases scales out well especially when it has been designated as the bottleneck.</p>
<div id="attachment_252" class="wp-caption aligncenter" style="width: 306px"><a href="http://blog.unixy.net/wp-content/uploads/2010/01/advancedcluster.png"><img class="size-medium wp-image-252" title="Advanced Cluster" src="http://blog.unixy.net/wp-content/uploads/2010/01/advancedcluster-296x300.png" alt="Advanced Cluster" width="296" height="300" /></a><p class="wp-caption-text">Advanced Cluster</p></div>
<p>Too often I get asked, why not deploy a monster server with 32 cores and 64GB of memory instead of building a cluster? While such server might or might not sustain the traffic, there are many points that need to be thought out. The truth is such monster server is cost prohibitive. The price to value is too high and not worth it. The reason being there is currently no commodity server that can handle 32 cores. One would need a considerable budget. For much less, one can get a 32-core <em>cluster</em>. The other point to consider is the fact that the motherboard bus will not be able to sustain the throughput required for a high traffic server. It will not be able to seamlessly pull 64GB/s in and out of the memory system.</p>
<p>Another important point is disaster recovery, one would need another equally powerful server or a very aggressive (read extremely expensive) part-replacement contract. On the other hand, commodity hardware is so affordable one could keep a few spares without breaking the bank! Plus, a monster server will never handle Digg or Slashdot effects. The cluster, however, can scale to accommodate for traffic spikes.</p>
<p>Keep in mind that UNIXy builds clusters for current customers free of charge. The support and service is included with your purchased dedicated servers. Contact us today and we will go above and beyond to help out.</p>
<p>That&#8217;s all folks!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.unixy.net/2010/01/what-is-a-cluster/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

