On Mon, Jun 30, 2008 at 11:15:00AM +0100, asim s wrote:
>
> http mode:
>
> 127.0.0.1:58270 [30/Jun/2008:11:10:20.515] accounts accounts/<NOSRV> 0/5002/-1/-1/5002 503 212 - - sQ-- 73/73/73/0/0 0/72 "GET /current_accounts/all HTTP/1.0"
Ah OK it's a 503, not a 502. I was worried! Here it means that it found no server for this request.
> tcp mode:
> 127.0.0.1:51308 [30/Jun/2008:11:09:17.072] accounts accounts/<NOSRV> 5001/-1/5001 0 sQ 73/73/73/0/0 0/70
OK same here.
> Here is my listen section:
>
> listen accounts 127.0.0.1:9001
> balance roundrobin
> server acc0 127.0.0.1:4300 check inter 500 rise 1 fall 2 maxconn 1
> server acc1 127.0.0.1:4301 check inter 500 rise 1 fall 2 maxconn 1
>
> I'm using ab with 80 concurrent connections, timeout connect of 5 secs. Basically trying to push to the edge of connection timeout and seeing if it redispatches, which does not seem to happen.
Due to the somewhat small check interval and fall timer, are you sure that you're simply not dropping packets ? If a SYN is lost during the connect stage, it is only retried 3 seconds later by the system. So maybe sometimes you have some failed servers because there's no server anymore ? Then it would make sense to return the 503 to pending requests because there's nobody to reply anymore.
You should enable the stats for this. Check them while this happens, and check the server's status and uptimes.
> I'm not using persistence cookies.
OK. So your request are always in the global queue, so that really means that *none* of your 2 servers are available.
BTW, I'm thinking about something : you set "maxconn 1". Is it a Rails server ? If so, it cannot process more than one request at once, so when it is processing a request, it cannot process a health-check! If this is your situation you need to increase the check interval, and/or the fall counter in order for the server to get a chance to sometimes respond to a check.
Regards,
Willy
Received on 2008/06/30 21:58
This archive was generated by hypermail 2.2.0 : 2008/06/30 22:01 CEST