I have been trouble-shooting a problem that appears constantly in my
mod_jk.log but is
only visible intermittently to users for a few months now.  Searching the
web and this archive
for similar error messages, I have found some solutions that have led me to
better Apache and
Tomcat setups, but have not solved the problem.  The problem is that a
commercial application
we are serving via Apache/Tomcat will periodically display a "Service
Temporarily Unavailable"
message in a random frame within the application, refreshing the browser
usually allows the
users to recover but this becomes painful when users go through the
multi-step process of entering data
or uploading files only to be interrupted by this and have to start over.
Support for the
commercial application has not been particularly helpful so I am hoping to
find suggestions
here to further try to solve this problem.

Our setup is Apache 2.0.59 (Win32) mod_ssl/2.0.59 OpenSSL/0.9.8d
mod_jk/1.2.19 and
Tomcat 5.5.15 running on Windows Server 2003 R2 Service Pack 1.  I will
include httpd.conf,
ssl.conf, workers.properties, and server.xml below.

Regardless of whether or not users see the "Service Temporarily Unavailable"
message in
any of the frames within the application, my mod_jk.log is full of errors
like this:

[Fri Apr 27 09:38:14 2007] [2764:1792] [error]
ajp_get_reply::jk_ajp_common.c (1536): (myworker) Tomcat is down or refused
connection. No response has been sent to the client (yet)
[Fri Apr 27 09:38:22 2007] [2764:3596] [error]
ajp_connection_tcp_get_message::jk_ajp_common.c (947): (myworker) can't
receive the response message from tomcat, network problems or tomcat is down
(127.0.0.1:8009), err=-54
[Fri Apr 27 09:38:22 2007] [2764:3596] [error]
ajp_get_reply::jk_ajp_common.c (1536): (myworker) Tomcat is down or refused
connection. No response has been sent to the client (yet)
[Fri Apr 27 09:38:25 2007] [2764:2148] [error]
ajp_get_reply::jk_ajp_common.c (1536): (myworker) Tomcat is down or refused
connection. No response has been sent to the client (yet)
[Fri Apr 27 09:38:31 2007] [2764:1792] [error]
ajp_connection_tcp_send_message::jk_ajp_common.c (914): sendfull returned
-53 with errno=53
[Fri Apr 27 09:38:31 2007] [2764:1792] [error]
ajp_send_request::jk_ajp_common.c (1350): (myworker) error sending request
body

Setting my log level to debug does not tell me much more:

[Tue May 15 14:21:38 2007] [1804:3328] [debug] ajp_service::jk_ajp_common.c
(1734): processing myworker with 2 retries
[Tue May 15 14:21:38 2007] [1804:3328] [info]
ajp_send_request::jk_ajp_common.c (1170): (myworker) socket 748 is not
connected any more (errno=0)
[Tue May 15 14:21:38 2007] [1804:3328] [info]
ajp_send_request::jk_ajp_common.c (1194): (myworker) error sending request.
Will try another pooled connection
[Tue May 15 14:21:38 2007] [1804:3328] [info]
ajp_send_request::jk_ajp_common.c (1170): (myworker) socket 784 is not
connected any more (errno=0)
[Tue May 15 14:21:38 2007] [1804:3328] [info]
ajp_send_request::jk_ajp_common.c (1194): (myworker) error sending request.
Will try another pooled connection
[Tue May 15 14:21:38 2007] [1804:3328] [info]
ajp_send_request::jk_ajp_common.c (1218): (myworker) all endpoints are
disconnected or dead
[Tue May 15 14:21:38 2007] [1804:3328] [info]  ajp_service::jk_ajp_common.c
(1867): (myworker) sending request to tomcat failed,  recoverable operation
attempt=1

As these are the only errors I see in any of my log files, I am convinced
this is why users will
periodically see frames that think Tomcat is not responding, why users do
not see these unavailable
errors in frames every time it occurs in the mod_jk.log is a little beyond
me.  We are tied to this
version of Tomcat (5.5.15) and to Java 1.5.0_05 by the commercial
application we are running, for support
purposes, even though their support has been unable to help us.

Any help I can get to at least resolve the errors I see in the mod_jk.log
would be great or if you see any
other errors in my configuration, although I think I have corrected it
pretty well.  See below.

Thanks

Brice

workers.properties
#####################################
workers.tomcat_home=D:\Tomcat5515
workers.java_home=D:\jdk1.5.0_05
ps=/
worker.list=myworker

worker.myworker.type=ajp13
worker.myworker.host=localhost
worker.myworker.port=8009
worker.myworker.cachesize=10
worker.myworker.cache_timeout=600
worker.myworker.socket_keepalive=1
worker.myworker.recycle_timeout=30
worker.myworker.lbfactor=1
#####################################

ssl.conf
#####################################
<IfDefine SSL>
   Listen 443
   AddType application/x-x509-ca-cert .crt
   AddType application/x-pkcs7-crl    .crl
   SSLPassPhraseDialog  builtin
   SSLSessionCache         dbm:logs/ssl_scache
   SSLSessionCacheTimeout  1500
   SSLMutex default
   SSLRandomSeed startup builtin
   SSLRandomSeed connect builtin

</IfDefine>
#####################################

httpd.conf snippet that I feel is relevant, I can post more if needed
#####################################
<IfModule mod_ssl.c>
   Include conf/ssl.conf
</IfModule>
<IfModule mod_jk.c>
   JkWorkersFile conf/workers.properties
   JkLogFile logs/mod_jk.log

   # Set the jk log level [debug/error/info]
   JkLogLevel debug
   JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

   # JkOptions indicate to send SSL KEY SIZE,
   JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
   # JkRequestLogFormat set the request format
   JkRequestLogFormat "%w %V %T"
</IfModule>
NameVirtualHost xxx.xxx.xxx.xxx:443
<IfDefine SSL>
   <VirtualHost xxx.xxx.xxx.xxx:443>
       ServerName mytomcatservername.net
       <Directory />
           Options FollowSymLinks -Indexes
           AllowOverride none
       </Directory>
       SSLEngine on
       SSLCertificateFile conf/ssl.crt/server.crt
       SSLCertificateKeyFile conf/ssl.key/server.key

       JkMount /applicationname/*.jsp myworker
       JkMount /applicationname/servlet/* myworker
       JkMount /applicationname/servlet myworker
   </VirtualHost>
</IfDefine>
#####################################

server.xml
#####################################
<Server port="8005" shutdown="SHUTDOWN">
 <Listener className="org.apache.catalina.core.AprLifecycleListener" />
 <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
/>
 <Listener className="
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
 <Listener className="
org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>


 <GlobalNamingResources>

   <Environment name="simpleValue" type="java.lang.Integer" value="30"/>

   <Resource name="UserDatabase" auth="Container"
             type="org.apache.catalina.UserDatabase"
      description="User database that can be updated and saved"
          factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
         pathname="conf/tomcat-users.xml" />

 </GlobalNamingResources>

 <Service name="Catalina">

   <Connector port="8009"
              enableLookups="false" redirectPort="8443"
connectionTimeout="0" protocol="AJP/1.3" />

   <Engine jvmRoute="ematrix" name="Catalina" defaultHost="localhost">
     <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
            resourceName="UserDatabase"/>
     <Host name="localhost" appBase="webapps"
      unpackWARs="true" autoDeploy="true"
      xmlValidation="false" xmlNamespaceAware="false">

     </Host>

   </Engine>

 </Service>

</Server>
#####################################

Reply via email to