1

This is a complete head-scratcher.

I've got a Rails application running on Passenger.

I've tested the services from several different clients (via curl) and found them performing perfectly. EXCEPT for one particular client (which just happens to be THE client) where we observe POST requests are failing intermittently (about 60-70% of the time).

The failed requests show up in the Apache access log with a 500 response but the application code is not even invoked.

curl reports something like this:

The response is:

Done waiting for 100-continue
< HTTP/1.1 100 Continue
* Recv failure: Connection was aborted
* Closing connection #0
curl: (56) Recv failure: Connection was aborted

Also observed "Gateway timeout" error messages via Charles Proxy.

The failure rate seems to be higher when sending more data.

I'm really baffled by the error because it only shows up for a particular client. I can only guess there's something in the network route that is causing the problem, but haven't the slightest idea how to fix it.

Anyone seen something like this before?

Lach
  • 11
  • 1

1 Answers1

0

My guess is, that the uplink from THE client so bad, that the data POST never completes. Because the data was never sent, the application never got it.

I sometimes have problems sending data when hooked up via a mobile (GSM) modem. The same sites work perfectly when I'm connected to a decent uplink.

Paweł Brodacki
  • 6,511
  • 20
  • 23
  • Thanks for the input, Paweł. That was my first assumption as well. Turns out that their uplink is pretty good for everything else though. Trace route shows that the latency is only a few milliseconds and we tested a similar service on a different server which works quickly and consistently. Apparently the failure is only for this combination of client and server. – Lach May 15 '11 at 15:33
  • Then the only thing I can think of is to run Wireshark on both ends of the connection (preferably at the input interface of the server and at the output gateway of the client) and looking at what's on the wire. This may give some hint. – Paweł Brodacki May 16 '11 at 06:58