[ 
https://issues.apache.org/jira/browse/JS2-852?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12568326#action_12568326
 ] 

Vitaly Baranovsky commented on JS2-852:
---------------------------------------

The same problem is with tomcat. By default, tomcat contains minSpareThreads=25 
and maxSpareThreads=75. So, thread pool contains from 25 up to 75 threads. So, 
there is very big memory overuse after some time of portal working. For 
example, our site is hanging for 5-10 minutes for about every 40 minutes. At 
this time garbage collector tries to free TenuredGen without any success.
I've maken memory time at the moment of this hanging, and I see many 
ContentFragmentImpl inside ThreadWithAttributes, and it uses very much of 
memory...
I think, workaround is setting minSpareThreads=0 maxSpareThreads=0 for tomcat, 
and people that uses jetspeed have to wait next jetspeed release. I've asked 
question about this in tomcat mailing list: 
http://www.nabble.com/Will-be-any-problem-if-I-set-minSpareThreads%3D0-maxSpareThreads%3D0-to15443784.html

Is there a simple way to fix this issue in source code of jetspeed 2.1.3?

> Release content buffers after rendering
> ---------------------------------------
>
>                 Key: JS2-852
>                 URL: https://issues.apache.org/jira/browse/JS2-852
>             Project: Jetspeed 2
>          Issue Type: Improvement
>          Components: Aggregation
>    Affects Versions: 2.2
>            Reporter: David Sean Taylor
>            Assignee: David Sean Taylor
>             Fix For: 2.2
>
>
> With a heap analysis tool, we have discovered that, when using a ThreadPool, 
> such as on WAS 6.1, thread locals are being held onto for long periods of 
> time.
> In the PortletEntityImpl, we are using a ThreadLocal to associate per user 
> content fragments with the current thread, as the entity object is not user 
> specific and thus not content specific.
> Instead of putting FragmentPortletDefinition directly on the thread local, 
> instead put it on the Request Context request attribute map (which is really 
> the servlet container's request  attribute map)
> Thus, the FragmentPortletDefinition, and all objects in its subtree, most 
> notably ContentFragmentImpl, PortletContentImpl, and PortletContentImpl's 
> stream of content, will all be put into true per request storage, and no 
> longer stick to the pooled thread locals.
> As an additional improvement, we will add logic to release the PortletContent 
> streams after completion of draining of buffered streams out to the servlet 
> response stream.
> I also want to investigate stream pooling properly at this time

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to