Thanks Rainer.
Just Curious,did these settings helped to overcome the multiple content
problem in your local setup?

Also,thanks for your pointer on the thread id's for getting the
correlations.


Regards,
Bala

-----Original Message-----
From: Rainer Jung [mailto:rainer.j...@kippdata.de]
Sent: Monday, September 14, 2009 2:50 PM
To: Tomcat Users List
Subject: Re: Need Help - Mod_jk/Apache - Mutiple Content issue

On 14.09.2009 09:22, balakarthik.baska...@wipro.com wrote:
> - Will the access log contain an entry for each request that is seen
> in the jk log?I can see a corresponding entry in the accesslog for an
> entry in the jk log in my local setup.But I coulnt interpret the same
> from my prod log.I hope getting this will provide some direction on
> what element is creating the timeout as from the prod log I can see
> one entry haing the a timeout in the same time perios as that of the
> other requests.Pl let me know how to interpret the files.I have sent
> you the prod log file in my prev mail.Pl let me know if you would like

> to resend the same or any other details.I too the all entries around
> 13:44:08 from both logs from prod.

Yes, all requests handled by mod_jk will be logged as usual in the
Apache access log (after finishing the request). If mod_jk needs to do
retries or a failover, you still get only one entry in the access log.
The duration logged is the full duration from beginning working on the
request until logging.

You should add a couple of interesting data to your httpd LogFormat:

%d: duration in microsenconds

%P %{tid}P: process and thread id. Those get logged in the mod_jk log
file to, so your can do correlations between access log and mod_jk log.

Maybe the Session Cookie (incoming and outgoing):

%{JSESSIONID}C %{Set-Cookie}o

and a couple of JK notes (details on
http://tomcat.apache.org/connectors-doc/reference/apache.html):

%{JK_LB_FIRST_NAME}n
%{JK_LB_FIRST_STATE}n
%{JK_LB_LAST_NAME}n
%{JK_LB_LAST_ACCESSED}n
%{JK_LB_LAST_ERRORS}n
%{JK_LB_LAST_BUSY}n
%{JK_LB_LAST_ACTIVATION}n
%{JK_LB_LAST_STATE}n


> # Define list of workers that will be used # for mapping requests #
> The configuration directives are valid # for the mod_jk version 1.2.18

> and later # worker.list=loadbalancer,status
>
>
> # Define Node1
> # modify the host as your host IP or DNS name.
> worker.node1.port=8109
> worker.node1.host=localhost
> worker.node1.type=ajp13
> worker.node1.lbfactor=1
> #worker.node1.prepost_timeout=10000 #Not required if using ping_mode=A

> #worker.node1.connect_timeout=80000 #Not required if using ping_mode=A

> worker.node1.ping_mode=A #As of mod_jk 1.2.27
> #worker.node1.activation=a
> #worker.node1.connection_pool_size=55

Let mod_jk decide on the connection_pool_size (when using Apache), do
not activate this line.

> worker.node1.socket_keepalive=True
> worker.node1.socket_timeout=5

I would not use a socket_timeout (personal preference).

> #worker.node1.connection_pool_timeout=30
> #worker.node1.recovery_options=7
> #worker.node1.ping_timeout=80000
> #worker.node1.prepost_timeout=80000
> #worker.node1.max_packet_size=65536
> #worker.node1.reply_timeout=5000
> worker.node1.retries=2

I would add the following (also to node2):

worker.node1.recovery_options=7
worker.node1.ping_timeout=10000
worker.node1.socket_connect_timeout=2000
worker.node1.connection_pool_minsize=0
worker.node1.connection_pool_timeout=600

# CAUTION: you need to set connectionTimeout in your Tomcat # or JBoss
connector to the same value # as connection_pool_timeout. But for mod_jk
it is in # seconds, for Tomcat or JBoss in milliseconds.
# So add connectionTimeout="600000" to your AJP connectors.

Personally I would also add a reply timeout, but that depends on the
application:

worker.node1.reply_timeout=300000

and then in order to not make nodes fail because of few reply timeouts:

worker.loadbalancer.max_reply_timeouts=20

Finally I would add the following to the balancer, which was introduced
in 1.2.28:

worker.loadbalancer.error_escalation_time=0

> # Define Node2
> # modify the host as your host IP or DNS name.
> worker.node2.port=8209
> worker.node2.host= localhost
> worker.node2.type=ajp13
> worker.node2.lbfactor=1
> #worker.node2.prepost_timeout=10000 #Not required if using ping_mode=A

> #worker.node2.connect_timeout=80000 #Not required if using ping_mode=A

> worker.node2.ping_mode=A #As of mod_jk 1.2.27
> #worker.node2.activation=a
> #worker.node2.connection_pool_size=55
> worker.node2.socket_keepalive=True
> worker.node2.socket_timeout=5
> #worker.node2.connection_pool_timeout=30
> #worker.node2.recovery_options=7
> #worker.node2.ping_timeout=80000
> #worker.node2.prepost_timeout=80000
> #worker.node2.max_packet_size=65536
> #worker.node2.reply_timeout=5000
> worker.node2.retries=2
>
>
>
> # Load-balancing behaviour
> worker.loadbalancer.type=lb
> worker.loadbalancer.method=B
> worker.loadbalancer.balance_workers=node1,node2
>
> # Status worker for managing load balancer worker.status.type=status
>
>
>
> #worker.node1.fail_on_status=304
> #worker.node2.fail_on_status=304
>
> #worker.node1.socket_connect_timeout=2000
> #worker.node2.socket_connect_timeout=2000

You might also want to use a template like this:

worker.template.host=localhost
worker.template.type=ajp13
worker.template.lbfactor=1
worker.template.ping_mode=A #As of mod_jk 1.2.27
worker.template.socket_keepalive=True
worker.template.retries=2
...

and then remove all of the above attributes form node1 and node2 and
instead use

worker.node1.reference=worker.template
worker.node1.port=8109
worker.node2.reference=worker.template
worker.node2.port=8209

That way you save a couple of lines and it gets easier to keep node1 and
node2 consistent.


> # Load mod_jk module
> # Specify the filename of the mod_jk lib LoadModule jk_module
> modules/mod_jk.so
>
> # Where to find workers.properties
> JkWorkersFile conf/workers.properties
>
> # Where to put jk logs
> JkLogFile logs/mod_jk.log

Maybe you want to use rotatelogs here, like

JkLogFile "|/my/path/to/apache/bin/rotatelogs
/my/path/to/apache/logs/mod_jk.log_%Y%m%d%H%M%S

> # Set the jk log level [debug/error/info] #JkLogLevel info JkLogLevel
> debug #JkLogLevel error

"info" for production

> # Select the log format
> JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

Remoce this one.

> # JkOptions indicates to send SSK KEY SIZE # Notes:
> # 1) Changed from +ForwardURICompat.
> # 2) For mod_rewrite compatibility, use +ForwardURIProxy (default
> since 1.2.24) # See http://tomcat.apache.org/security-jk.html
> JkOptions +ForwardKeySize +ForwardURICompatUnparsed
> -ForwardDirectories

Remove "+ForwardURICompatUnparsed" unless you know what you do.
Use the other ones also only if you need them.

> # JkRequestLogFormat
> JkRequestLogFormat "%w %V %T %m %q %s"

Remove that one and use the above tips for improving your access log
logging.

> # Mount your applications
> #JkMount /__application__/* loadbalancer # Let Apache serve the images

> #JkUnMount /__application__/images/* loadbalancer
>
> # You can use external file for mount points.
> # It will be checked for updates each 60 seconds.
> # The format of the file is: /url=worker # /examples/*=loadbalancer
> JkMountFile conf/uriworkermap.properties

I hope that file is fine.

> # Add shared memory.
> # This directive is present with 1.2.10 and # later versions of
> mod_jk, and is needed for # for load balancing to work properly #
> Note: Replaced JkShmFile logs/jk.shm due to SELinux issues. Refer to #

> https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=225452
> JkShmFile run/jk.shm
>
>
>
> # Add the jkstatus mount point
> JkMount /jkstatus/* status
> JkMount /test/* loadbalancer
> JkMount /PioneerCycling/* loadbalancer

If you are using VirtualHosts in Apache, and your JkMount are not
working, add "JkMountCopy All".

> # Add jkstatus for managing runtime data <Location /jkstatus> JkMount
> status

This JkMount line here is somewhat duplicate, because you already
mounted /jkstatus/*.

> Order deny,allow
> Deny from all
> Allow from 127.0.0.1
> </Location>

Regards,

Rainer

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org


Please do not print this email unless it is absolutely necessary. 

The information contained in this electronic message and any attachments to 
this message are intended for the exclusive use of the addressee(s) and may 
contain proprietary, confidential or privileged information. If you are not the 
intended recipient, you should not disseminate, distribute or copy this e-mail. 
Please notify the sender immediately and destroy all copies of this message and 
any attachments. 

WARNING: Computer viruses can be transmitted via email. The recipient should 
check this email and any attachments for the presence of viruses. The company 
accepts no liability for any damage caused by any virus transmitted by this 
email. 

www.wipro.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to