On Thu, 2009-05-07 at 06:26 +0200, Willy Tarreau wrote:

> generally this is caused by overloaded servers which can't manage to
> respond at all due to the amount of work they have in their backlog
> queue. Please add "maxconn 50" for instance on each "server" line to
> see if it changes anything. Also, what type of server are you using ?
> For instance, mongrel only accepts one request at a time and will not
> respond to any health-check while it's processing a long request, so
> with it you need "maxconn 1".


Turns out that the problem was specifying a source port address. It
looks like it prevented haproxy from opening a TCP connection. I was
using that to distinguish tests from regular connections on the
destination server. I'm going to add an address on the interface and use
that instead.

And the destination was either stunnel or an in-house app. If you need
more info on where the problem was, let me know and I'll wade through
the logs. 


> > One question: couldn't it be possible to have redispatch work for
> TCP
> > connections?
> 
> it does. However you have one particular config, you're using "balance
> source"
> with your TCP config. That means that when you redispatch the
> connection,
> you apply the LB algorithm again and you can only get back to the same
> server if it is still seen as up, because the size of the farm has not
> changed. There are two workarounds for this :
>  - don't use "balance source" when not needed :-)
>  - add enough retries to cover for the time to detect the server down,
>    taking into account that each attempt waits at least 1 second.
> 
> For the second solution, you can combine "inter" and "fastinter" to
> lower the failure detection time. For instance, "inter 5s fastinter
> 1s fall 2" will take 5 + 2*1 = 7s to see the server as down. So with
> at least 8 retries it should be OK. The redispatch will occur once
> the server has been taken out of the farm, so the source hash
> algorithm will bring you to another server.


Thanks a lot for your answers. Much appreciated.

 
About Ingenico: Ingenico is the world’s leading provider of payment solutions, 
with over 15 million terminals deployed across the globe. Delivering the very 
latest secure electronic payment technologies, transaction management and the 
widest range of value added services, Ingenico is shaping the future direction 
of the payment solutions market. Leveraging on its global presence and local 
expertise, Ingenico is reinforcing its leadership by taking banks and 
businesses beyond payment through offering comprehensive solutions, a true 
source of differentiation and new revenues streams.
 This message may contain confidential and/or privileged information. If you 
are not the addressee or authorized to receive this for the addressee, you must 
not use, copy, disclose or take any action based on this message or any 
information herein. If you have received this message in error, please advise 
the sender immediately by reply e-mail and delete this message. Thank you for 
your cooperation.
 P Please consider the environment before printing this e-mail
 
 

Reply via email to