Hi all,

I have a web application running on Tomcat 5.5.23 with an Apache 2.2.4
webserver using the jk 1.2.22 connector.  I am seeing some strange
behavior - I have started to get only the first part of a response
when requesting large pages on lower bandwidth (1024 Kbps)
connections.  Here is an excerpt from the Apache access log:

XXX.XXX.XXX.XXX - - [18/Mar/2008:12:37:23 -0500] "GET
/reporting/data_reports.jsf HTTP/1.1" 200 69638
YYY.YYY.YYY.YYY - - [18/Mar/2008:12:36:34 -0500] "GET
/reporting/data_reports.jsf HTTP/1.1" 200 210513

IP YYY.YYY.YYY.YYY is being served the full 210,513 bytes, but IP X is
only being served the 69,638.  Note that the POST parameters were
exactly the same for the two requests, so they should be serving the
exact same page.  But IP X gets only the first part.

>From this it looks like the problem is with either Tomcat not creating
the entire request, or with the jk connector not passing the request
to Apache.  I sometimes get this error in the mod_jk log:

[Tue Mar 18 12:10:32 2008] [5016:5600] [info]  jk_ajp_common.c (1448):
Writing to client aborted or client network problems
[Tue Mar 18 12:10:32 2008] [5016:5600] [info]  jk_ajp_common.c (1857):
(worker2) request failed, because of client write error without
recovery in send loop attempt=0
[Tue Mar 18 12:10:32 2008] [5016:5600] [info]  mod_jk.c (2247):
Aborting connection for worker=worker2

but I have far more truncated responses than I do mod_jk errors.

I have increased every single timeout related configuration option I
can find to what I think are stupidly high levels hoping to stumble
across something that will resolve the issue.  Does anyone have an
idea about this?

Here are snippets from my configurations.  Please let me know if I
should include more detail.


***** httpd.conf  ******


# Enable compression of responses
AddOutputFilterByType DEFLATE text/html text/plain text/xml


# Config for mod_jk
<IfModule !mod_jk.c>
  LoadModule jk_module "C:/Program Files/Apache Software
Foundation/Apache2.2/modules/mod_jk.so"
</IfModule>

JkWorkersFile "C:/Program Files/Apache Software Foundation/Tomcat
5.5/conf/jk/workers.properties"
JkLogFile "C:/Program Files/Apache Software Foundation/Tomcat
5.5/logs/mod_jk.log"
JkLogLevel   info

<VirtualHost ZZZ.ZZZ.ZZZ.ZZZ:80>

RewriteEngine on
RewriteRule ^/reporting/(.*)$ https://www.example.com/reporting/$1 [R,L]

</VirtualHost>

<VirtualHost ZZZ.ZZZ.ZZZ.ZZZ:443>
ServerName http://www.example.com
SSLEngine on
SSLCertificateFile "C:/Program Files/Apache Software
Foundation/Apache2.2/conf/www.example.com.crt"
SSLCertificateKeyFile "C:/Program Files/Apache Software
Foundation/Apache2.2/conf/www.example.com.2.key"

JkMount /reporting/* worker2

</VirtualHost>

TimeOut 24000
KeepAliveTimeout 600


**** server.xml ****

<!-- Define the Tomcat Stand-Alone Service -->
  <Service name="Catalina">

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150"
minSpareThreads="25" maxSpareThreads="75" enableLookups="false"
redirectPort="8443" acceptCount="100" disableUploadTimeout="true"
connectionTimeout="3600000"/>
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="100" disableUploadTimeout="true"
connectionTimeout="3600000" protocol="AJP/1.3"/>

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>

        <Listener className="org.apache.jk.config.ApacheConfig"
modJk="C:/Program Files/Apache Software
Foundation/Apache2.2/modules/mod_jk.so" />


    <Host name="localhost" appBase="C:/Program Files/Apache Software
Foundation/Tomcat 5.5/webapps"
       unpackWARs="true" autoDeploy="true" expireSessionsOnShutdown="true"
       xmlValidation="false" xmlNamespaceAware="false">

      </Host>

    </Engine>

  </Service>

</Server>



**** workers.properties *****

# Define some properties
workers.apache_log="C:\Program Files\Apache Software
Foundation\Apache2.2\logs\error.log"
workers.tomcat_home="C:\Program Files\Apache Software Foundation\Tomcat 5.5"
workers.java_home="C:\Program Files\Java\jrockit-R27.2.0-jre1.5.0_10"
ps=\
# Define 2 workers, 1 real workers using ajp13, the last one being a
loadbalancing worker
worker.list=worker2,worker4

# Set properties for worker2 (ajp13)
worker.worker2.type=ajp13
worker.worker2.host=127.0.0.1
worker.worker2.port=8009
worker.worker2.lbfactor=1
#worker.worker2.connection_pool_timeout=0
worker.worker2.socket_keepalive=true
worker.worker2.socket_timeout=0
worker.worker2.connection_pool_minsize=2400
worker.worker2.connection_pool_timeout=3600
worker.worker2.retries=5
worker.worker2.reply_timeout=0


# Set properties for worker4 (lb) which use worker2
worker.worker4.type=lb
worker.worker4.balance_workers=worker2
worker.worker4.retries=5
worker.worker4.connection_pool_timeout=3600
worker.worker4.connection_pool_minsize=2400
worker.worker4.reply_timeout=0

---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to