Hi Daniel,

On Mon, Oct 04, 2010 at 11:46:06AM +0200, Daniel Storjordet wrote:
>  Hi.
> 
> We have the following task:
> 
> The webbrowser gets a list of 20 to 100 items to be processed.
> Currently we have 5 processing servers, each with 4 cores. This makes a 
> optinal processing capacaty of 4x5=20 at one time.
> Each processing server processes one item at a time.
> The processing of an item can take from 2 seconds to 2 minutes.
> The arcitecture need to be able to scale up to handle many users at once.
> 
> My suggestion to solve the task using HAProxy:
> 
>    * Webrowser open up 10 ajax calls at a time.
>    * Each ajax call is processed by haproxy and an available processing
>      server is assigned, or put in queue.
>    * When a item is processed, the result is displayed on page using
>      Javascript, and another ajax call is opened until all items has
>      been processed.
>    * Keep-alive is enabled to reduce the number of connections to HAProxy.
> 
> The developement team however thinks this is the better solution:
> 
>    * Browser opens a single ajax call to a processing manger server
>      with the entire list of items.
>    * The Processing manager connects to the processing servers and
>      combines the results.
>    * Each 20 seconds a new ajax call is opened to the processing
>      manager to return any finished items and the result is shown on
>      the page.
> 
> The development team thinks that creating up to 100 ajax connections per 
> user will result in too much overhead. My plan to solve this is by only 
> opening 10 ajax calls at one time and use the browsers keep-alive to 
> solve the problem.
> 
> Would keep-alive work so that only 10 connections will be opened by the 
> browser?

Keep-alive on the client side will work, so that's something that can be
done. However, even 10 concurrent connections per user can become huge
if you have a large number of users.

Regards,
Willy


Reply via email to