Great info John and my head hurts now too...  :o)

I understand fully the dynamics and differences in environments, usage, etc.  I 
know what we have is not fully optimized and we need to look at all of those 
options but we need something that is at least stable in the interim.  I've 
already made a few tweaks and hope we can get access to the document referenced 
in the other message for further recommendations.  I'm not at liberty to use 
anything I want (Government Environment) so our optimization opportunities are 
limited with what we're allowed to install.

We used the 7.5 P6 installer so 5.5.28 is what that installed.  Not sure how 
often that is updated either.

Thanks again,

Craig Carter
Information Technology Manager, RSP

-----Original Message-----
From: Action Request System discussion list(ARSList) 
[mailto:[email protected]] On Behalf Of John Baker
Sent: Wednesday, December 01, 2010 2:32 AM
To: [email protected]
Subject: Current Stable Tomcat/Java Versions/Settings

David makes an important point.  Tomcat 5.5.28 is over 14 months old,
and 6.0.18 is over two years old.  Off hand, I don't know what version
BMC ship with AR System but I'd hope it was the latest, as minor version
increments often include important security bug fixes.

I also believe it's difficult to come up with a set of 'default
settings' for Tomcat/Apache as it's often something derived on a case by
case basis - infrastructure is as important as usage.

For example, Apache 2.2 is often configured to use mod_prefork instead
of mod_worker.  The difference is that mod_perfork spawns separate
processes to deal with requests, where as mod_worker uses threads.  I've
run a simple load test (using http_load) against Apache 2.2 and JBoss
(which is Tomcat, as far as this discussion is concerned), and
discovered that Tomcat will serve twice as many requests with
mod_worker.  Setting up Apache to use mod_worker was easy, but that was
because my distribution (Redhat El 5.4) made it easy. 

However, my test was not against the Midtier application but a simple
web application that served a simple JSP.  Midtier has the added (not
insignificant) complication of an AR System back end; there's no point
in optimising your web platform if AR System is incapable of dealing
with the load, hence one needs to look at that too.  

Perhaps the following pointers may help?

* Apache

There's no point simply listing my configuration as it isn't for you,
but you need to look at this section in httpd.conf (the default for
Apache 2.2 deployed on Redhat EL 5.4):

<IfModule worker.c>
  StartServers         2
  MaxClients         150
  MinSpareThreads     25
  MaxSpareThreads     75
  ThreadsPerChild     25
  MaxRequestsPerChild  0
</IfModule>

MaxClients set to 150 is a little low for a high user base; you may want
to consider 1000, and setting ServerLimit to 50.  

You can find the documentation here
(http://httpd.apache.org/docs/2.2/mod/worker.html) and that's a great
resource.

Also, the KeepAlive setting is switched off by default in this
deployment so you may want to switch it on (see the keepalive setting in
mod_jk below too).

* mod_jk

Now let's consider mod_jk, the default options aren't helpful, and here
are some suggestions which turns on keepalive, sets the connection and
reply timeout to 5s, with 3s timeouts on two other properties that are
best described in the docuemntation. 

worker.basic.socket_keepalive=1
worker.basic.socket_connect_timeout=5000
# Prefer specific properties to ping_timeout
#worker.basic.ping_timeout=1000
worker.basic.connect_timeout=3000
worker.basic.prepost_timeout=3000
worker.basic.reply_timeout=5000
worker.basic.ping_mode=A
worker.basic.connection_pool_timeout=5

Again, the documentation is here
(http://tomcat.apache.org/connectors-doc/reference/workers.html) and
it's worth a read.  

* Tomcat 

I can't comment on each Tomcat build but most don't seem to have the AJP
connector setup, and if you've customised Apache/mod_jk then you'd need
to review the connector.  It can be found in the server.xml file:

      <Connector protocol="AJP/1.3" port="8009" address="..."
      redirectPort="8443"
         connectionTimeout="5000"
         keepAliveTimeout="10000"
         maxThreads="100"/>

Again, more options!  According to the docs, connectionTimeout (in
milliseconds) needs to be set to the mod_jk connection_pool_timeout
value (helpfully defined in seconds).  I had heard a rumour that it
isn't required for mod_worker, but I can't confirm this to be true.  My
keepAliveTimeout is set to 10s for reasons related to reverse proxies
upstream, but I've included it for consideration.

* Summary

So where does this leave us?  Well, my head is hurting thinking about
this topic because there are so many options to optimise an
Apache/Tomcat deployment before we've even considered load balancers, AR
System, the database, etc., and this hasn't covered IIS (but I'd
recommend Apache for large busy deployments).

We also haven't mentioned mod_cluster (www.jboss.org/mod_cluster), which
is the replacement for mod_jk (as mod_jk is about a decade old).

The challenge for BMC is that they provide great ITSM solutions, but
tuning Apache/Tomcat/JBoss/Weblogic/SSO/etc. is not in scope with the
core business.  As David points out, Tomcat is delivered for
convenience, and in many cases it's perfectly sufficient, but it's not
optimised for your environment and it's very difficult to provide a set
of recommended options given the large amount of external factors.

I hope the references above are a helpful starting point in your
research.


John
-- 
Single Sign On for AR System
http://www.javasystemsolutions.com/jss/ssoplugin

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
attend wwrug11 www.wwrug.com ARSList: "Where the Answers Are"

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
attend wwrug11 www.wwrug.com ARSList: "Where the Answers Are"

Reply via email to