On Mon, Oct 10, 2011 at 10:32 PM, Ricky Boone <ricky.bo...@gmail.com> wrote:
> I am trying to troubleshoot an issue with our load balancer, and how it > considers a backend server alive or dead. > > The servers are running IIS 6 (Win2K3), running an ASP.NET web service in > its own application pool. The pool is set with multiple (4, at the moment) > worker processes. > > The problem occurs when the worker processes are starting, or when they > recycle/refresh due to memory or other thresholds set in the application > pool. The load balancer keeps throwing traffic at the server, even though > it isn't ready. It shows as an increasing number of Current Connections on > the backend server. Where the count normally never exceeds 10-15, it > usually increases to a few dozen trough a couple hundred before the worker > processes finally warm up on their own. > > I'm aware of ASP.NET and how it caches on the first hit (per worker). We > have a process (using ApacheBench) to warm-up the worker processes, however > if there are unexpected refresh/recycle events, we have to disable the > backend server, manually warm-up the worker processes, then add it back. > Quite hectic. > > The issues with the application cannot be resolved (not our application). > We want the load balancer to stop sending traffic to a server that is not > responding to requests promptly, but still provide a way for the load > balancer to assist with the warm-up process. > I am new to haproxy, But i think I can help you here. You can use a custom health check aspx page and make haproxy do health checks within certain interval of time using "http-check expect". Haproxy will take the node down if, reply is not returned within specified period. Ex : backend web-backend balance leastconn option httpchk GET /check.aspx HTTP/1.0 http-check expect string Success server node1 192.168.8.1:80 check inter 3000 rise 2 fall 3 maxconn 250 - Karthik Iyer