Hi,

I have an MDB that needs to start a timer in some cases when it receives a 
message. This is implemented in terms of an EJB3 timeout method. However, it 
seems that JBoss is creating a thread per timer. This is causing OutOfMemory 
errors because the VM cannot allocate new threads for the timers, eventually 
resulting in a crash of the server when handling large loads (20000 timers). It 
is necessary to create the timers, so changing the code to not use timers is 
not an option.

I've googled around a bit for a a solution to this problem, and came across 
https://jira.jboss.org/jira/browse/EJBTHREE-1330. This issue does mention a 
workaround (using StrictMaxPool instead of the standard evergrowing 
ThreadlocalPool. But my MDBs are already using the StrictMaxPool (15 instances 
strictMaximum), and this does not seem to help. 

I would assume that there is a way to configure the TimerService itself to use 
a thread pool, but the Jira issue does not specify how this could be done, nor 
does the documentation.

I would really appreciate it someone could shed some light on this... If there 
is no way of limiting the threads created by the TimerService, I'll have to 
change the implementation. But if there is some way of changing this, I would 
like to know how to do this because it would be the most elegant solution...

Thanks in advance,

Alexander

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4223548#4223548

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4223548
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to