Peter Johnson [
http://community.jboss.org/people/peterj] replied to the discussion
"Variation in Max Heap size"
To view the discussion, visit:
http://community.jboss.org/message/554644#554644
--------------------------------------------------------------
An appplication server will always have remote objects, whether you use them directly or
not. By default, the RMI code will perform a major collection every minute. The settings
in the run scripts change this to every hour. Why every hour? Why not every 30 minutes, or
every 24 hours or every week? Where did the recommendation of one hour come from, and what
is it based on?
At the very first JBoss World in 2005 I presented a talk on JBoss AS performance tuning,
using the SpecJAppServer benchmark to do the analysis. A typical benchmark run included
starting the app server, trying a web page or two to make certain things were running
correctly, running the benchmark, and then shutting the app server down. The benchmark
runs for about 20 minutes. We didn't want the RMI collector to fire off a major
collection during the benchmark so we changed the delay to be long enough that it would
not interfere with the benchmark - 60 minutes. After that talk, the 60 minute RMI setting
appreared in the run scripts.
The 60 minutes suited out benchmark run - it practically guaranteed that there would be no
RMI collection during the time the app server was running. So how long do you typically
run the app server before restarting it? A week? A month? Longer? Well, that is what you
should base the RMI GC settings on, not an arbitrary recommendation of 60 minutes.
Moral of the story: find out why someone recommends a certain setting, then adjust the
setting based on your environment and circumstances.
Oh, and by the way, the RMI thread that handles the GC uses System.gc(), so setting
DisableExplicitGC will prevent the RMI GC from taking place. However, it is still a good
idea to set sun.rmi.dgc.client.gcInterval and sun.rmi.dgc.server.gcInterval to a high
value to prevent the RMI thread (the one that sleeps for the time interval and then calls
Syste,.gc()) from running.
--------------------------------------------------------------
Reply to this message by going to Community
[
http://community.jboss.org/message/554644#554644]
Start a new discussion in Performance Tuning at Community
[
http://community.jboss.org/choose-container!input.jspa?contentType=1&...]