<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: High Availability Principle : Request Queueing</title>
	<atom:link href="http://saasinterrupted.com/2010/02/24/high-availability-principle-request-queueing/feed/" rel="self" type="application/rss+xml" />
	<link>http://saasinterrupted.com/2010/02/24/high-availability-principle-request-queueing/</link>
	<description>-- A blog by Ashish Soni.</description>
	<lastBuildDate>Wed, 03 Nov 2010 23:57:46 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Joey</title>
		<link>http://saasinterrupted.com/2010/02/24/high-availability-principle-request-queueing/#comment-132</link>
		<dc:creator><![CDATA[Joey]]></dc:creator>
		<pubDate>Thu, 04 Mar 2010 16:16:01 +0000</pubDate>
		<guid isPermaLink="false">http://saasinterrupted.com/?p=86#comment-132</guid>
		<description><![CDATA[Guys

I&#039;ve just come across this thread googling around on ideas to implement a &#039;queing concept&#039; for web sites. What I want to understand is this:

Say that a web site copes with 1000 concurrent requests at any time. The web site is database driven.

And for a specific hour, you expect the concurrent requests to possibly hit 5 fold (ie 5000 concurrent requests)  due to a timed activity say advertised on MSN.

Is there a way to allow the first 1000 users into the web site, and let them visit the 4-5 pages required to complete a shopping basket transaction, and hold the remaining 4000 queing them in.

I&#039;m not an expert at all in this subject, but curious as to how to implement a solution to queue up requests without having to spend loads on additional web servers to handle more traffic.

From what I understand on web requests, each user request is separate to their previous request. So if a user is one of the first 1000 to get in, the next time they traverse to another page on the site, their request will be new and therefore queued with the remaining 4000, which is not what I want. I want this user to complete their journey on the web site pages.


thanks

Joey]]></description>
		<content:encoded><![CDATA[<p>Guys</p>
<p>I&#8217;ve just come across this thread googling around on ideas to implement a &#8216;queing concept&#8217; for web sites. What I want to understand is this:</p>
<p>Say that a web site copes with 1000 concurrent requests at any time. The web site is database driven.</p>
<p>And for a specific hour, you expect the concurrent requests to possibly hit 5 fold (ie 5000 concurrent requests)  due to a timed activity say advertised on MSN.</p>
<p>Is there a way to allow the first 1000 users into the web site, and let them visit the 4-5 pages required to complete a shopping basket transaction, and hold the remaining 4000 queing them in.</p>
<p>I&#8217;m not an expert at all in this subject, but curious as to how to implement a solution to queue up requests without having to spend loads on additional web servers to handle more traffic.</p>
<p>From what I understand on web requests, each user request is separate to their previous request. So if a user is one of the first 1000 to get in, the next time they traverse to another page on the site, their request will be new and therefore queued with the remaining 4000, which is not what I want. I want this user to complete their journey on the web site pages.</p>
<p>thanks</p>
<p>Joey</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rag</title>
		<link>http://saasinterrupted.com/2010/02/24/high-availability-principle-request-queueing/#comment-128</link>
		<dc:creator><![CDATA[Rag]]></dc:creator>
		<pubDate>Mon, 01 Mar 2010 18:51:22 +0000</pubDate>
		<guid isPermaLink="false">http://saasinterrupted.com/?p=86#comment-128</guid>
		<description><![CDATA[The problem with today&#039;s web servers is that requested are served synchronously. Typically, the request processing involves talking to a database, file system, or similar long lasting operation, which holds up the connection. A new slew of web servers explore handling requests asynchronously. Node.js (http://nodejs.org/), Tornado (http://www.tornadoweb.org/), etc. are some of the non-blocking servers that might help with concurrency issues. Queuing is required eventually, but async handling at least delays queuing requirement and helps supporting a larger concurrency.]]></description>
		<content:encoded><![CDATA[<p>The problem with today&#8217;s web servers is that requested are served synchronously. Typically, the request processing involves talking to a database, file system, or similar long lasting operation, which holds up the connection. A new slew of web servers explore handling requests asynchronously. Node.js (<a href="http://nodejs.org/" rel="nofollow">http://nodejs.org/</a>), Tornado (<a href="http://www.tornadoweb.org/" rel="nofollow">http://www.tornadoweb.org/</a>), etc. are some of the non-blocking servers that might help with concurrency issues. Queuing is required eventually, but async handling at least delays queuing requirement and helps supporting a larger concurrency.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ashish Soni</title>
		<link>http://saasinterrupted.com/2010/02/24/high-availability-principle-request-queueing/#comment-124</link>
		<dc:creator><![CDATA[Ashish Soni]]></dc:creator>
		<pubDate>Fri, 26 Feb 2010 02:10:55 +0000</pubDate>
		<guid isPermaLink="false">http://saasinterrupted.com/?p=86#comment-124</guid>
		<description><![CDATA[Thanks Martin,
                          You make a great point that is worth highlighting : &quot;You need headroom between your usual traffic and the degeneration point in order to recover from spikes.&quot;   So in the example above with the degeneration point being at 500 requests/second - one&#039;s steady system state should be below that.  
As an example : With the usual traffic being 50% below the degeneration point(in the example at 500) following would be the response time profile for a system handling a spike (while getting the usual traffic): 
Spike equal to 1x usual traffic : No response time degradation
Spike equal to 2x usual traffic : Response times doubled.  
Spike equal to 3x usual traffic : Response times tripled.  
and so on.]]></description>
		<content:encoded><![CDATA[<p>Thanks Martin,<br />
                          You make a great point that is worth highlighting : &#8220;You need headroom between your usual traffic and the degeneration point in order to recover from spikes.&#8221;   So in the example above with the degeneration point being at 500 requests/second &#8211; one&#8217;s steady system state should be below that.<br />
As an example : With the usual traffic being 50% below the degeneration point(in the example at 500) following would be the response time profile for a system handling a spike (while getting the usual traffic):<br />
Spike equal to 1x usual traffic : No response time degradation<br />
Spike equal to 2x usual traffic : Response times doubled.<br />
Spike equal to 3x usual traffic : Response times tripled.<br />
and so on.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Martin Waite</title>
		<link>http://saasinterrupted.com/2010/02/24/high-availability-principle-request-queueing/#comment-122</link>
		<dc:creator><![CDATA[Martin Waite]]></dc:creator>
		<pubDate>Thu, 25 Feb 2010 11:45:48 +0000</pubDate>
		<guid isPermaLink="false">http://saasinterrupted.com/?p=86#comment-122</guid>
		<description><![CDATA[Your example neglects to mention that new requests are coming even while entries are being removed from the queue.  If new entries come in at 500 requests per second, from the point of the spike onwards, your response time will always be 3 seconds.  Another 1500 spike next week will push the response time to 6 seconds, and so forth.

You need headroom between your usual traffic and the degeneration point in order to recover from spikes.]]></description>
		<content:encoded><![CDATA[<p>Your example neglects to mention that new requests are coming even while entries are being removed from the queue.  If new entries come in at 500 requests per second, from the point of the spike onwards, your response time will always be 3 seconds.  Another 1500 spike next week will push the response time to 6 seconds, and so forth.</p>
<p>You need headroom between your usual traffic and the degeneration point in order to recover from spikes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Willie Wheeler</title>
		<link>http://saasinterrupted.com/2010/02/24/high-availability-principle-request-queueing/#comment-121</link>
		<dc:creator><![CDATA[Willie Wheeler]]></dc:creator>
		<pubDate>Wed, 24 Feb 2010 20:51:55 +0000</pubDate>
		<guid isPermaLink="false">http://saasinterrupted.com/?p=86#comment-121</guid>
		<description><![CDATA[Yup.

Also, I was a bit unclear in one part of my explanation, so I want to clarify. We would fail fast on just that one panel of the page (leave the panel blank or else have a error message for that panel), but deliver the overall page itself within SLA.]]></description>
		<content:encoded><![CDATA[<p>Yup.</p>
<p>Also, I was a bit unclear in one part of my explanation, so I want to clarify. We would fail fast on just that one panel of the page (leave the panel blank or else have a error message for that panel), but deliver the overall page itself within SLA.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ashish Soni</title>
		<link>http://saasinterrupted.com/2010/02/24/high-availability-principle-request-queueing/#comment-119</link>
		<dc:creator><![CDATA[Ashish Soni]]></dc:creator>
		<pubDate>Wed, 24 Feb 2010 18:52:25 +0000</pubDate>
		<guid isPermaLink="false">http://saasinterrupted.com/?p=86#comment-119</guid>
		<description><![CDATA[Thanks for the comment Willie.  
I too am a believer in the &lt;strong&gt;&quot;Fail Fast&quot;&lt;/strong&gt; paradigm.  Request Queueing along with some reasonably set queue timeouts can achieve linear degradation along with the ability to Fail Fast.]]></description>
		<content:encoded><![CDATA[<p>Thanks for the comment Willie.<br />
I too am a believer in the <strong>&#8220;Fail Fast&#8221;</strong> paradigm.  Request Queueing along with some reasonably set queue timeouts can achieve linear degradation along with the ability to Fail Fast.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Willie Wheeler</title>
		<link>http://saasinterrupted.com/2010/02/24/high-availability-principle-request-queueing/#comment-117</link>
		<dc:creator><![CDATA[Willie Wheeler]]></dc:creator>
		<pubDate>Wed, 24 Feb 2010 15:58:30 +0000</pubDate>
		<guid isPermaLink="false">http://saasinterrupted.com/?p=86#comment-117</guid>
		<description><![CDATA[This is a great article. Thanks for posting it.

I agree with the points you make but I want to add one more. In some cases it is preferable to simply reject the request rather than respond slowly, even with linear degradation from the end user&#039;s perspective. Suppose for example that you have a portal home page that makes server-side web service calls to grab the various pieces of the page. If some of those pieces are less important to the user, it&#039;s probably better for the web service to simply reject the request than to have the web service latency cascade into whole-page latency.

Anyway great article.]]></description>
		<content:encoded><![CDATA[<p>This is a great article. Thanks for posting it.</p>
<p>I agree with the points you make but I want to add one more. In some cases it is preferable to simply reject the request rather than respond slowly, even with linear degradation from the end user&#8217;s perspective. Suppose for example that you have a portal home page that makes server-side web service calls to grab the various pieces of the page. If some of those pieces are less important to the user, it&#8217;s probably better for the web service to simply reject the request than to have the web service latency cascade into whole-page latency.</p>
<p>Anyway great article.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

