vIP Queue not releasing connections
I've configured a vIP with a default pool, created an iRule that inspects the http:payload, and routed certain requests to a second pool based on the payload contents. This was working perfectly until I load tested it. I increased the synthetic traffic on the vIP until the requests in the second pool began queueing and then eventually 50% of requests in the queue timed out before being forwarded to a member. The load test worked very well and all requests were being handled correctly well past the point we normally see under real peak load conditions. However, when I removed the synthetic load we noticed that real web traffic routed to the second pool was timing out in the queue half of the time. This despite the fact that both member servers were green, healthy, and not under nearly enough load to justify queuing. Requests that weren't queued were handled quickly and immediately. Requests that were queued just waited in the queue until they timed out. It seems like there is some bug under the hood that I've stumbled across. Is this a known issue? Are there hotfixes for something like this? Using BIG-IP 13.1.3.4 Build 0.0.5
Recycling services on all client and member servers did not help. Forcing member nodes offline and disabling them did not clear up the issue. We could not see any evidence of health monitors failing, nor was there any reason why they would.
when HTTP_REQUEST {
if {[HTTP::method] eq "POST"}{
if {[HTTP::header "Content-Length"] ne "" && [HTTP::header "Content-Length"] <= 500}{
set content_length [HTTP::header "Content-Length"]
} else {
set content_length 500
}
if { $content_length > 0} {
HTTP::collect $content_length
}
}
}
when HTTP_REQUEST_DATA {
if {[HTTP::payload] contains "DoLongSearch"}{
pool website_search
}
}