Kirill Kireyev <kir...@instagrok.com> wrote:

>Thanks for all your thorough advice Shanti! (and everyone else)
>
>Here are my findings so far:
>0) My servlet sessions store a large number (~10s of M) or data in RAM.
>
>This is by design, to optimize performance. I can also have ~3K active 
>sessions at any one time. Hence a large heap size.
>1) When I (1) manually expire inactive sessions through Tomcat web 
>interface and (2) manually hit "Perform GC" through jvisualvm console 
>attached to the tomcat process, everything works great, and the memory 
>is successfully reclaimed, and the used heap  size drops back to what
>it 
>should be when the application initializes.
>2) However, this doesn't seem to work automatically. More specifically:
>     a) Sessions are not expiring without manually doing it (I can see 
>the number growing in the Tomcat web interface). Even though my 
>conf/web.xml says:
>     <session-config>
>         <session-timeout>20</session-timeout>
>     </session-config>
>    b) A full garbage collection is not being performed unless I do it 
>manually. I'm attaching the GC records from my logs/catalina.out.
>
>Any insights?

Session expiration is performed by the background processing thread. What is 
that thread doing (a thread dump - well several over time - will tell you).

Fix the session expiration issue and the GC issue will be solved. Note the JVM 
may well not perform a full GC unless it absolutely has to. In fact, the JVM 
may not perform any GC if it doesn't have to.

Mark

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to