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

Gary Tully reopened AMQ-6184:
-----------------------------
      Assignee: Gary Tully  (was: Dejan Bosanac)

The change from SynchronousQueue to BlockingQueue(1k) impacts the default core 
pool size of 10.
It means that the corePool is only incremented when the blocking queue capacity 
is reached.
A test case where async 10 producers block on fow-control demonstrates the 
limitation.

> Improve nio transport scalability
> ---------------------------------
>
>                 Key: AMQ-6184
>                 URL: https://issues.apache.org/jira/browse/AMQ-6184
>             Project: ActiveMQ
>          Issue Type: Improvement
>    Affects Versions: 5.13.0
>            Reporter: Dejan Bosanac
>            Assignee: Gary Tully
>             Fix For: 5.14.0
>
>
> NIO transport uses unbounded thread pool executor to handle read operation. 
> Under large number of connections and load, this could lead to large number 
> of threads and eventually OOM errors. Which is the exact problem that nio 
> transport is supposed to solve. Some work has been done in [AMQ-5480], to 
> make this configurable, but there's still more work to make it more robust. 
> Creating a fixed thread pool with a queue in front gives much better results 
> in my tests.
> Additionally, the same thread pool is used for accepting connections 
> ([AMQ-5269]). This can lead to the broker not being able to accept new 
> connections under the load. I got much better results when experimenting with 
> implementing acceptor logic directly and handling it in the same thread 
> (without reintroducing the old problem). 
> With these two improvements in place, the broker accept and handle the number 
> of connections up to the system limits.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to