----- Original Message ----- From: "Johnny Kewl" <[EMAIL PROTECTED]>
To: "Tomcat Users List" <users@tomcat.apache.org>
Sent: Sunday, September 07, 2008 9:58 AM
Subject: Re: Tomcat 6 Memory problem



----- Original Message ----- From: "Barak Yaish" <[EMAIL PROTECTED]>
To: "'Tomcat Users List'" <users@tomcat.apache.org>
Sent: Sunday, September 07, 2008 9:25 AM
Subject: Tomcat 6 Memory problem


Bouncing, in case someone missed this post...

Is this thread should be relocated to the dev list?

Thanks again,

Barak.

-----Original Message-----
From: Barak Yaish [mailto:[EMAIL PROTECTED]
Sent: Thursday, September 04, 2008 1:23 PM
To: users@tomcat.apache.org
Subject: Tomcat 6 Memory problem

Hello all,



I'm running Tomcat 6.0.16 on CentoOS 5, linked with native library. I
deployed a Servelt, which on invocation executes an RMI call to a remote RMI
server. Tomcat configured with max heap size of 2G

After short time of running under heavy load, the memory consumption
reported by top is close to 2G. jmap output is:



Attaching to process ID 20248, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 1.6.0-b105



using thread-local object allocation.

Parallel GC with 4 thread(s)



Heap Configuration:

  MinHeapFreeRatio = 40

  MaxHeapFreeRatio = 70

  MaxHeapSize      = 2147483648 (2048.0MB)

  NewSize          = 1048576 (1.0MB)

  MaxNewSize       = 4294901760 (4095.9375MB)

  OldSize          = 4194304 (4.0MB)

  NewRatio         = 2

  SurvivorRatio    = 8

  PermSize         = 16777216 (16.0MB)

  MaxPermSize      = 268435456 (256.0MB)



Heap Usage:

PS Young Generation

Eden Space:

  capacity = 582221824 (555.25MB)

  used     = 0 (0.0MB)

  free     = 582221824 (555.25MB)

  0.0% used

From Space:

  capacity = 48103424 (45.875MB)

  used     = 48079216 (45.85191345214844MB)

  free     = 24208 (0.0230865478515625MB)

  99.9496751000511% used

To Space:

  capacity = 69402624 (66.1875MB)

  used     = 0 (0.0MB)

  free     = 69402624 (66.1875MB)

  0.0% used

PS Old Generation

  capacity = 1431699456 (1365.375MB)

  used     = 1424597528 (1358.6020736694336MB)

  free     = 7101928 (6.772926330566406MB)

  99.50395119798104% used

PS Perm Generation

  capacity = 35782656 (34.125MB)

  used     = 28493056 (27.173095703125MB)

  free     = 7289600 (6.951904296875MB)

  79.62811927655677% used



I've dump a file using jmap, and asked MemoryAnalyzer (www.eclipse.org/mat) to take a look. This tool reported that an instance of java.security.Policy
retained 77.7% of the heap (552,569,816 bytes).



I would like to ask whether this behavior seems normal?



Thanks,

No not normal.... you runneth out of juice...
I dont know this native lib you using... what happening is every thread in TC is making another one of these dll/so's

You probably going to have to find the source and study it a little, but normally a native lib should be invoked in a static call... If this is not the case, its breeding like a rabbit... a new native on every thread.

The guys that designed it will probably know... but I think you going to have to put part of this animal in the servlet init... so it only wakes up once. And then make sure you know if its multithreaded, or must be protected... sync'd

If you do have the source, you cant change that section without remaking stubs... so rather try init it just once.

The other thing about natives is that unlike Java that doesnt really care if its on 64 bit or 32 bit... natives do care. So if your JRE is 32 bit now... even when you later get a nice big fat 64 bit monster... Java must stay on 32 bit... unless you can find a 64 bit native.

More or less... going to have to ask the guys that made it, or peek at the code

Have fun...

Just an after thought... do you have anything like the task manager in linux that windows has...
I seem to remember something like that on debian...

Anyway... on windows heap space and that stuff doesnt show you much... its the handles that we watch... And why they useful... is that as soon as heavy load comes off... those handles quickly recover, if they dont, you leaking ;) In your case the old heap is filling... and in theory that old heap should only hold long lived objects (so mel tells me).. ie things like a xml parser and that sort of stuff... the eden should be rising and falling like a yoyo, and the old heap should stable out... Anyway... if you can just find the equive of task manager handles on your linux... its easier to watch.

I think ;)
---------------------------------------------------------------------------
HARBOR : http://www.kewlstuff.co.za/index.htm
The most powerful application server on earth.
The only real POJO Application Server.
See it in Action : http://www.kewlstuff.co.za/cd_tut_swf/whatisejb1.htm
---------------------------------------------------------------------------





---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to