Mladen Turk wrote:

> 
> One more...
> 
> Here is the scenario:
> 
> If TC instance is too busy or reached the connection limit the next
> connection is refused, causing entire worker to switch to the error
> state. This isn't very smart (at least for threaded servers).
> I propose that we use the apr_queue to solve that.
> The socket will be pushed to the queue, when successfully connected, and
> pop when finished.
> If we reach the connection limit the next one will block until the any
> of the active one finishes (releasing space in the queue).
> Also, if the connection is refused and we have some sockets in the queue
> (meaning the TC is busy responding), we'll block untill the connection
> is accomplished or timed-out.

Alternative solution: 

When ( connection_limit - 1 )  is reached, we send back a special response
code ( OVERLOADED ). Same could be sent if the worker uptime is higher 
than a certain limit ( if you implement the other proposal ).

The response code will not put the worker in error state, just move it to
the end of the queue. If all worker are overloaded, we'll just inform the
user.

Regardless of the solution you choose - I don't think you should block,
or at least you should have an option that will switch to the next
worker or return a message. It's far better to get a page displaying
a progress bar or telling to try later - instead of the "hunged" feeling.


Costin


> 
> If there is a connection error caused by the TC's fault, the returned
> error from freed one will cause the entire worker to go to the error
> state.
> 
> Thoughts?
>  
> MT.



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to