IIS + Apache + Mongrel: Problem with big data submit form

Hi all,

I deployed a Rails application on a Windows Server 2003 machine as
follows:

  • I created two instances of Mongrel at ports 4001, 4002 to serve the
    application

  • I set up an Apache instance at port 8080 for balancing load for the
    two Mongrels => So I can access my website at URL http://mywebsite:8080/

  • I want to allow users access my website without typing port 8080 in
    the URL. However, the server already runs IIS for several other
    web-sites at default port 80. Therefore, I used ISAPI Rewrite to
    forward
    requests from IIS (at port 80) to the Apache (and therefore towards
    the
    Mongrels) => I can access the website at URL http://mywebsite/

(To do these steps, I followed the guide in book Deploying Rails
Application - Pragmatic Bookshelf)

Everything seems to work fine until I find out the following problem:

In my application, the user register form page allows user to upload
his/her avatar. But whenever the file size is bigger than ~30KB, the
browser keeps waiting for response from the server until getting
timeout
error.

This error also occurs in any submitting form with a little big posted
data.

  • Looking at the Apache error log file, I got the following error:

[error] proxy: pass request body failed to 127.0.0.1:4001

=> Apache seems to fail to forward request to Mongrel instance

  • Looking at the Mongrel log file, I got the following error:

Error reading HTTP body: #<RuntimeError: Socket read returned
insufficient data

=> Mongrel seems not to receive fully the data whose length specified
in
Content-Length attribute in the request header.

One special thing is that this error just happens when I access the
web-site via IIS, i.e., http://mywebsite. This does not happen when I
try directly with Apache at http://mywebsite:8080 or Mongrel at
http://mywebsite:4001/(4002)

So I think there may be something wrong at the point of forwarding
requests from IIS to Apache using ISAPI Rewrite. I found this error in
httperror.log:

Timer_EntityBody DefaultAppPool

But I totally get stuck at that point.

Please help if you have any suggestion to solve this problem.

Thank you!

Best regards,

.Viet Trung.

Anybody has any idea, please?

Best regards,

.Viet Trung.

On Jan 13, 8:05Â am, viettrung do [email protected] wrote:

Anybody has any idea, please?

This sounds like an IIS problem, and few people on this group will
know about that sort of stuff. Have you tried asking on an IIS related
group

Fred

OK, thank you, Fred.

Best regards,

.Viet Trung.

On Wed, Jan 13, 2010 at 6:50 PM, Frederick C. <

I’m facing the same trouble. If you already got the clue please let me
know (So would I) my email is makarov_petr[at]mail.ru. Thanx.

Hi Makarov,

Thanks for sharing the problem.

On Thu, Jan 14, 2010 at 5:24 PM, Petr M. [email protected]
wrote:

I’m facing the same trouble. If you already got the clue please let me
know (So would I) my email is makarov_petr[at]mail.ru. Thanx.

Unfortunately, I have still not figured it out. If having any further
clue,
I will inform you.

Best regards,

.Viet Trung.

viettrung do wrote:


One special thing is that this error just happens when I access the
web-site via IIS, i.e., http://mywebsite. This does not happen when I
try directly with Apache at http://mywebsite:8080 or Mongrel at
http://mywebsite:4001/(4002)

What about posting the uploads to http://mywebsite:8080 (as a
workaround)?

Regards, T.

T. N. T. wrote:

What about posting the uploads to http://mywebsite:8080 (as a
workaround)?

Forget it.