I'm working on a high-traffic ASP.NET website, and around once per 30 minutes, we get a POST request that triggers a HttpException: Request timed out.
In our debugging, we found out that ASP.NET is getting the request, but not the request body. Here are the headers:
Connection: Keep-Alive
Content-Length: 49476
Content-Type: application/x-www-form-urlencoded
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate
Accept-Language: en-US,en
Host: abc.123.com
Referer: https://abc.123.com/page.aspx
And the request body is empty. We are behind a load balancer, if that helps with anything.
My question is, how would I debug and fix an issue like this? According to the accepted answer in this post:
Diagnosing "Request timed out" HttpExceptions
It looks like what may be happening is that the request is being split into two TCP segments, one for the header and one for the body. Since we're behind a load balancer with a common virtual IP, it may be entirely possible that one of the TCP segments is being sent to one server and the other is being sent to another. Would this be a plausible case? Or can something else be causing it?