I've got a problem on a production server that has been running since April. 
The problem has been ongoing for the last 6 days or so and everything I've 
tried doesn't seem to do anything to alleviate the problem.

The server is a Win2003R2 server running a fully patched CF8.01 install. Until 
4 days ago, the server was running under JVM 1.6.0_10. Having read through the 
change logs for the more recent JVM's there are several memory leaks that have 
been fixed in the JVM itself so we upgraded it to JVM 1.6.0_16-b01.

The error I'm seeing in the hotspot JVM error log is:

# A fatal error has been detected by the Java Runtime Environment:
#
# java.lang.OutOfMemoryError: requested 5242880 bytes for GrET in 
C:\BUILD_AREA\jdk6_16\hotspot\src\share\vm\utilities\growableArray.cpp. Out of 
swap space?

I hooked up JConsole to the production server and watch the system through 
several crashes using the following info

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9500
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

The only thing that climbs is memory usage. 

Memory Pool "CMS Old Gen" just keep on climbing until about 1.2Gb is used, the 
server then runs at this for an hour or two (sometimes less) before restarting 
the jrun service.

Average Par Eden memory usage is @ 35 Mb
Average Par Survivor memory usage is @ 6Mb
Average Code Cache memory usage is @ 10Mb
Average CMS Perm Gen is @ 47Mb

Active threads  sits at around 90 - 110
Loaded classes sits at around 9 to 10,000

Nothing spikes, there are no hints as to what is happening other that the 
aggressive memory leak causing the Out of Memory errors.

I've also tinkered with the JVM arguments and this is what they're set to at 
the moment.

-server -Dsun.io.useCanonCaches=false
-XX:MaxPermSize=384m
-Dcoldfusion.rootDir={application.home}/../
-Dcoldfusion.libPath={application.home}/../lib
-XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseConcMarkSweepGC
-XX:+HeapDumpOnOutOfMemoryError

Unfortunately the HeapDumpOnOutOfMemoryError directive seems not to work :-( as 
I wanted to examine the dump with JHat but there are no dump files on the 
server and we've had 6 JVM crashes today.

The server is hosting 3 sites all of which are running the same code, two are 
very light traffic, the third is a medium heavy traffic site with around 20,000 
visitors a day averaging out at around 700 sessions in existence at any given 
time.

I've been looking through the server logs, the SVN logs etc to see if anything 
significant has changed over the last week and as far as I can tell, nothing 
has.

The leak certainly appears to be request driven as at low traffic times between 
1am and 6am, the site stay up just fine. 

The architecture of the platform running on the server is a predominantly 
singleton based object hierarchy using a custom object factory to handle the 
generation of objects in the system most of the objects provide functions to 
interface with the DB and aren't creating lots of objects themselves.

I've also looked at SeeFusion and FusionReactor trials to see if they can help 
me but neither of them seem to be able to tell me how much memory each request 
is using etc, they both seem to be too general for my needs.

If anyone has any idea as to what I can do to chase this down I'd very much 
appreciate it.

TIA

Paul



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Want to reach the ColdFusion community with something they want? Let them know 
on the House of Fusion mailing lists
Archive: 
http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:326272
Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4

Reply via email to