You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Minh Do (JIRA)" <ji...@apache.org> on 2011/03/23 19:38:08 UTC

[jira] [Updated] (AMQ-3214) "InactivityMonitor Async Task" threads leaking

     [ https://issues.apache.org/jira/browse/AMQ-3214?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Minh Do updated AMQ-3214:
-------------------------

    Description: 
-Have a multi-thread consumers running to consumer messages
-Have Connection to have these :
       		ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUrl);
		connectionFactory.setUseAsyncSend(false);
		connectionFactory.setDispatchAsync(false);
		connectionFactory.setAlwaysSessionAsync(false);
		connectionFactory.setAlwaysSyncSend(true);

-Run the consumers for several hours and profile it
-You will see there are threads with the name "InactivityMonitor Async Task" being spawning continuously

This will cause the entire consumer system to slow down eventually due to thread context switching.  

Suggestion to fix: we should not put a limit on the number of "InactivityMonitor Async Task" threads to be Max Integer.  There is a bug in Java lib that
it will not stop a thread after a given idle time-to-live. We could fix this in the file InactivityMonitor.java


  was:
-Have a multi-thread consumers running to consumer messages
-Have Connection to have these :
       		ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUrl);
		connectionFactory.setUseAsyncSend(false);
		connectionFactory.setDispatchAsync(false);
		connectionFactory.setAlwaysSessionAsync(false);
		connectionFactory.setAlwaysSyncSend(true);

-Run the consumers for several hours and profile it
-You will see there are threads with the name "InactivityMonitor Async Task" being spawning continuously

This will cause the entire consumer system to slow down eventually due to thread context switching.  


        Summary: "InactivityMonitor Async Task" threads leaking  (was: Re-evaluate the use of ExecutorService.newCachedThreadPool() in places as there are threads leaking. For instance, after profiling, I saw there were over 100 threads with the name "InactivityMonitor Async Task".)

> "InactivityMonitor Async Task" threads leaking
> ----------------------------------------------
>
>                 Key: AMQ-3214
>                 URL: https://issues.apache.org/jira/browse/AMQ-3214
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: JMS client, Transport
>            Reporter: Minh Do
>            Priority: Critical
>             Fix For: 5.5.0
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> -Have a multi-thread consumers running to consumer messages
> -Have Connection to have these :
>        		ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUrl);
> 		connectionFactory.setUseAsyncSend(false);
> 		connectionFactory.setDispatchAsync(false);
> 		connectionFactory.setAlwaysSessionAsync(false);
> 		connectionFactory.setAlwaysSyncSend(true);
> -Run the consumers for several hours and profile it
> -You will see there are threads with the name "InactivityMonitor Async Task" being spawning continuously
> This will cause the entire consumer system to slow down eventually due to thread context switching.  
> Suggestion to fix: we should not put a limit on the number of "InactivityMonitor Async Task" threads to be Max Integer.  There is a bug in Java lib that
> it will not stop a thread after a given idle time-to-live. We could fix this in the file InactivityMonitor.java

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira