Tomcat 6.0.x (unsure but 33+)  with Java 1.6 and Windows 2008 Server.

I've got a customer who is monitoring his system using the Windows Performance 
Monitor and is concerned about Tomcat usage of the nonpaged pool.  When 
monitoring just the Tomcat service, it shows the line for the pool to slowly 
rise over time, with hardly ever a drop that cannot be attributed to a restart 
of the service (I think).
I know that the nonpaged pool contains structures that should not be paged out 
by Windows per this quote:
  "Nonpaged pool is therefore always kept present in physical memory and 
nonpaged pool virtual memory is assigned physical memory. Common system data 
structures stored in nonpaged pool include the kernel and objects that 
represent processes and threads, synchronization objects like mutexes, 
semaphores and events, references to files, which are represented as file 
objects, and I/O request packets (IRPs), which represent I/O operations."

I am struggling with how this relates to internal workings of Tomcat & Java.  
Obviously, as more processing threads, in this case connectors not executors, 
are opened, I would expect to see a rise in this pool to support all the items 
it uses.  I would expect to see a drop as usage dropped and connectors were 
returned (or are they permanent at 6). Also, I assume processing threads for 
the Oracle connection pool will cause this to increase as well, and should drop 
as the pool size drop back to normal.  Any app-based threads would also cause a 
rise, but should drop if the thread is properly terminated.

I guess that this shows a potential memory leak somewhere, I'm just wondering 
if there are other things I should look at that could determine if this is 
normal behavior or indicative of a real issue.

I do most of my Tomcat app monitoring using jconsole, jvisualvm, and the Oracle 
OEM for looking for connection pool leaks there (not an easy task).

Any help is appreciated.

Jeff

Reply via email to