You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Daniel Bramblett <da...@bellsouth.net> on 2010/06/19 23:18:09 UTC

[users@httpd] Not your typical broken pipe?

Hi folks,

I've got a problem that I'm hoping someone smarter than me can help with.  I have a Java webstart application that runs on the users local machine.  It communicates via HTTP with a servlet backend and obtains application specific objects from the backend via serialization.  These are all Java objects.  The primary architecture is as follows:

client (Java WebStart Application) <----> HTTP <----> Tomcat <---> JDBC <----> Database     [All works fine with this arrangement.]

When only the Tomcat servlet engine is called directly, via port 8080, all is well and everything works fine.  However, when I add the Apache Web Server into the picture things start having problems with regard to the size of the objects being serialized over the HTTP connection. See the diagram below:

client (Java WebStart Application) <----> HTTP <----> Apache HTTP Server <--> mod_jk or proxy <---> Tomcat <---> JDBC <----> Database     [Things start to have problems with this arrangement.]

I really want to use the Apache server in the middle because I don't want the port number in the URL since our clients are not comfortable allowing that through their firewall plus I get the benefit of additional logging.  But when I add the Apache HTTP server into the picture it cuts off the connection for serialized objects approaching 1MB in size.  I've searched extensively through Google and have found some folks having trouble with mod_jk.  So I took mod_jk out all together by using a proxy but still the size problem remains which leads me to think there's an issue with Apache HTTP Server or perhaps my specific setup.  To reiterate when I point to Tomcat directly, via the 8080 port URL, there are no problems at all, it's only when the Apache HTTP server is introduced that large object serialization starts failing.

Now for the specifics:

Application/version information.
Apache HTTP Server version: 2.0.52
mod_jk version: 1.2.25
Tomcat version: 5.5.23-1ep
Java version: 6.0
Server operating system: CentOS 4

Specific error on HTTP server: (32)Broken pipe: core_output_filter: writing data to the network
Specific error on Tomcat: getDecisionTrees. Exception! ClientAbortException:  java.net.SocketException: Broken pipe
Specific error on Client: java.io.IOException: missing CR

Changes I've tried in the http.conf file:
Timeout 300
KeepAlive On
MaxKeepAliveRequests 0
KeepAliveTimeout 60
EnableMMAP off

Obervations ,comments and/or suggestions are most welcome!

Regards,
Daniel Bramblett
danielbramblett@bellsouth.net

P.S. I can provide the httpd.conf file on request.