Hi Nate.

Yeah, the AggressiveHeap is definitely an option.  My take on it - over
months of researching, fighting, tweaking the memory settings is that it
leaves a lot of decision making up to the VM.  While this is not necessarily
a bad thing - prefer to keep some more control - although that may be my
paranoia talking :)

Thing is that memory settings I find are more about finding a balance
between the different 'users' of the resources within the entire system -
all the servers and apps need to coexist on the box - and as such I do not
believe there is a 'fix-all' setting - ites definitely more about finding
the settings which allow your particular setup to exist best in harmony!  

With that in mind however, I will give this setting a go on one of my boxes
- one where the SQL Server is not running and is on another machine - and
see what effect it has - will report any findings/conclusions back to the
list for those that are interested.

With regards the CPU usage I would agree with you in that dual or quad Xeons
will not suffer under the AggressiveHeap option - although it does not that
it is intended for quad processors...

Gains and losses?  Depends on your requirements and setup.  As stated in my
case (as I did in fact try the AggressiveHeap) where quite often the Tomcat
server and Database server runs on the same machine it did not work as well
as the more granular settings I have used.  I am also a firm believer in
leaving enough RAM for the underlying native processes and OS to do its
work!

All in all resource tweaking is generally a tedious task that requires
thorough investigation and a good understaning of your environment and the
requirements of your web apps, servers, and operating system...

Thanks and regards,

Carl

-----Original Message-----
From: Nate Rock [mailto:[EMAIL PROTECTED]
Sent: 03 December 2005 14:58
To: Tomcat Users List; [EMAIL PROTECTED]
Subject: RE: How much memory will Tomcat 5.5/Java 5 support?

-XX:+AggressiveHeap usage for JVM?

This email is pointed almost directly for Carl Oliver, since he seems to be
someone who knows his virtual memory settings, but I figure Joe Reger might
get something out of it too ;)

Evidently this setting by iteself "instructs the JVM to push memory use to
the limit", and is only recommended for use on boxes containing a single JVM
with nothing else running on it (a server running only Tomcat seems to foot
the bill)

It does a few things that Carl suggested implicitly

-XX:+UseParallelGC
-XX:+UseAdaptiveSizePolicy
-Xss256k

You can read more about it here:

http://java.sun.com/docs/hotspot/gc1.4.2/

>From my experience it has made some of our "problem servers" much more
stable, allowing them to run for months without OOM instead of days or weeks
allowing us to actually use session replication without the servers going
bananas ;) We also used to have our Max memory set at -Xms1300mb and
-Xmx1300mb, but I have found that when using the
-XX+Aggressive heap the JVM memory usage rarely tops 1024MB because it's
cleaned out much more efficiently.

Carl what is your take on this? I realize it uses a bit more CPU because of
the adaptive size and parallelGC, but on duel Xeon boxes CPU usually isn't
the limiting factor (at least in our case). 

What gains/loss do you see over using -XX:AggressiveHeap (dynamic,
adjustible settings) vs hard coding fixed settings like you suggest? 

   -rOcK 

-----Original Message-----
From: Carl Olivier [mailto:[EMAIL PROTECTED]
Sent: Saturday, December 03, 2005 7:43 AM
To: 'Tomcat Users List'; [EMAIL PROTECTED]
Subject: RE: How much memory will Tomcat 5.5/Java 5 support?

Hi Joe.

Well, heres how I run it - and remember this is all dependent on the
beakdown of requirements of the following:

1.  Web app memory needs - how memory intensive are your web apps within
Tomcat going to be?
2.  Concurrent connections (tcp threads) for incoming requests - how busy
will the web apps be?
3.  Are you running DB connections?  Are you using a Connection pool?
How long will each db connection take to return?
4.  Are you running OTHER applications/servers on the server which will
require memory?  E.g. RDBMS Server 5.  Always be aware that the native OS
will also need memory - thus you cannot just give it all to Tomcat!

So, heres one of my scenarios:

Server:
Quad Xeon
2GB RAM

OS:
Windows 2000 Server (32 bit)

Applications/Servers:
Tomcat 5.0.28 (with 40 web apps/contexts/classloaders) MSSQL Server 2000

My Tomcat runtime switches are as follows:

-Xms768m                                //assign all the JVM heap at
startup
to 768mb
-Xmx768m                                //assign max JVM heap
-Xss128k                                //set the native thread stack
size
memory allocation down from windows def of 1024kb - very useful
-XX:+UseParallelGC                      //parralel GC - makes use of the
multiple processors
-XX:MaxPermSize=256m            //up the perm gen space (used for
classloading etc) from def 64mb - also useful with lots of web apps
-XX:+DisableExplicitGC          //don't let the System.gc() be called as
it
could cuse 'pause the world's

I also limit the amount of RAM that MSSQL can have to 640mb - and have also
set the memory allocation size per sql connection down from 1024kb to 512kb
(SQL Server setting) - this is however due to my running MSSQL Server on the
same box and may not apply.

I have thus left some RAM for the OS to use where required - this should not
be ignored.

I found that this is a pretty stable setup - with my only problem occurring
occasionally when I get a MAJOR spike in concurrent requests.
I plan to upgrade to a 64bit OS soon and to up the SQL RAM allocation as my
problem lies there - it sometimes has issues with memory!

It should be noted that my web apps can be fairly SQL intensive - I do have
VM level caching but alas not all of it....

Anyway - I do hope that helps!

Other areas you could look into is the number of concurrent requests Tomcat
serves (set at a Connector level) - as too many will cause memory issues
under load, while too few will cause visitors to be rejected/wait for
response!

Anyway, take care,

Carl


-----Original Message-----
From: Joe Reger, Jr. [mailto:[EMAIL PROTECTED]
Sent: 03 December 2005 13:19
To: Tomcat Users List
Subject: Re: How much memory will Tomcat 5.5/Java 5 support?

> Are you running a 64bit or 32bit OS?  If 32bit the JVM will not be 
> able to assign higher that 2gb for a single process (which includes 
> system overheads etc).

Hi Carl - I'm 32 bit right now.   I'll check the archive for past posts.

How would you go about using more of the memory that I have on the server?
Can I run two Tomcat services and cluster?

Thanks for the feedback and help!

Joe

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to