we use https://github.com/apache/tomee/blob/master/container/openejb-core/src/main/java/org/apache/openejb/util/ExecutorBuilder.java to build the thread pool so configuring <ra id>.QueueType=SYNCHRONOUS|LINKED and <ra id>.MaximumPoolSize you can have a finer control (Note: there are more config but these ones are the one you target)
If you use threadPoolSize < 0 we'll use a cached thread pool size so it will auto adjust but potentially grow a lot. Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber <http://www.tomitribe.com> 2015-09-28 7:43 GMT-07:00 Steve Goldsmith <[email protected]>: > OK, so could I have the following configuration (say NIO): > > Default\ JMS\ Resource\ Adapter.ThreadPoolSize=100 > Default\ MDB\ Container.InstanceLimit=1000 > > What happens when I max out the thread pool? > > On Mon, Sep 28, 2015 at 10:40 AM, Romain Manni-Bucau < > [email protected]> > wrote: > > > Le 28 sept. 2015 07:36, "Steve Goldsmith" <[email protected]> a écrit : > > > > > > How would you configure NIO for MDB? I do plan on stress testing, but I > > > want to make sure I understand the configuration. Is there a 1 to 1 > > > relationship with Default\ JMS\ Resource\ Adapter.ThreadPoolSize and > > > Default\ MDB\ Container.InstanceLimit? > > > > > > > Nio is on the broker url if embedded, there are samples on the list > > A 1-1 relationship is not mandatory, but in bio connection it makes > sense - > > in nio more rarely. > > > > > On Mon, Sep 28, 2015 at 10:29 AM, Romain Manni-Bucau < > > [email protected]> > > > wrote: > > > > > > > Le 28 sept. 2015 07:24, "Steve Goldsmith" <[email protected]> a > écrit : > > > > > > > > > > OK, yea, it's not real clear where configuration preference go > (i.e. > > > > > system.properties or tomee.xml). My goal is to have 100 messages > > > > processing > > > > > simultaneously for each MDB. I could have 5 or 10 distinct beans > that > > > > need > > > > > to handle up to 100 messages each simultaneously. In case of 10 > beans > > > > with > > > > > 100 simultaneously messages (1000 total) would I have to use: > > > > > > > > > > Default\ JMS\ Resource\ Adapter.ThreadPoolSize=1000 > > > > > Default\ MDB\ Container.InstanceLimit=1000 > > > > > > > > > > Is there any implications to this? I have a scenario where I could > > have a > > > > > onMessage last up to 30 seconds and we have tens of thousands of > > users. I > > > > > need it to scale to a lot of MDBs. Are there OS tuning > considerations > > > > based > > > > > on the number of active threads? > > > > > > > > > > > > > Standard OS config are important like ulimit. 1000 threads sounds a > > lot. > > > > Also using a delegation pattern nio transport and mdb calling a > > singleton > > > > or app scoped cdi bean you should be able to scale more easily. > > > > > > > > Only way to ensure it is to bench it on your actual machine - even if > > > > theory is good better to check it actually works cause bottleneck > can > > be > > > > totally different. > > > > > > > > > On Sun, Sep 27, 2015 at 9:53 PM, Leonardo K. Shikida < > > [email protected]> > > > > > wrote: > > > > > > > > > > > sounds correct for me > > > > > > > > > > > > if you want to run tests and see things clearer, you probably can > > try > > > > this > > > > > > in your MDB instead > > > > > > > > > > > > @ActivationConfigProperty(propertyName = > > > > "maxMessagesPerSessions", > > > > > > propertyValue = "1") > > > > > > > > > > > > so each MDB will only fetch 1 message at a time > > > > > > > > > > > > I am not sure if this parameter is related, but it's another one > > you > > > > can > > > > > > try, if your configuration is not working as expected. > > > > > > > > > > > > <Resource id="MyJmsConnectionFactory" > > > > > > type="javax.jms.ConnectionFactory"> > > > > > > ResourceAdapter = Default\ JMS\ Resource\ Adapter > > > > > > PoolMaxSize = 100 > > > > > > </Resource> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > [] > > > > > > > > > > > > Leo > > > > > > > > > > > > On Tue, Sep 22, 2015 at 5:15 PM, sgjava <[email protected]> > wrote: > > > > > > > > > > > > > If I have multiple MDBs that I want to scale to 100 beans > > > > simultaneously, > > > > > > > how > > > > > > > would I configure TomEE? Currently I'm using: > > > > > > > > > > > > > > system.properties: > > > > > > > > > > > > > > Default\ JMS\ Resource\ Adapter.ThreadPoolSize=100 > > > > > > > Default\ MDB\ Container.InstanceLimit=100 > > > > > > > > > > > > > > bean: > > > > > > > > > > > > > > @MessageDriven(activationConfig = { > > > > > > > @ActivationConfigProperty(propertyName = "maxSessions", > > > > propertyValue > > > > > > > = "100"), > > > > > > > @ActivationConfigProperty(propertyName = > > > > "maxMessagesPerSessions", > > > > > > > propertyValue = "100")}) > > > > > > > > > > > > > > But this would only cover 100 simultaneous beans? For instance, > > say > > > > I > > > > > > have > > > > > > > 10 beans that could have 100 messages active at the same time > or > > 1000 > > > > > > > beans. > > > > > > > How would the configuration look? > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > View this message in context: > > > > > > > > > > > > > > > > > > > > > > > > > > http://tomee-openejb.979440.n4.nabble.com/Scaling-MDBs-beyond-default-10-limit-tp4676322.html > > > > > > > Sent from the TomEE Users mailing list archive at Nabble.com. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > Steven P. Goldsmith > > > > > > > > > > > > > > > > -- > > > Steven P. Goldsmith > > > > > > -- > Steven P. Goldsmith >
