Hi, +1 for a common Thread pool.
On Sat, Nov 21, 2015 at 8:08 PM, Reka Thirunavukkarasu <r...@wso2.com> wrote: > Hi Akila, > > Yah..I think that we can share a common thread pool per monitor. AFAIK, > there was no specific reason to maintain thread pool per monitor object. > > @Gayan, Do you aware of any particular reason why we did like that? > > All the monitors need one thread allocated for periodic execution. Other > than that, based on child events, the particular processing will be > executed as thread. So i believe that we can share the thread pool and make > it to 100 by default. May be we can increase the thread pool size > proportional to the number of nodes in the application. We can come up with > that value for the thread pool size. > > Thanks, > Reka > > On Sat, Nov 21, 2015 at 1:20 PM, Akila Ravihansa Perera < > raviha...@wso2.com> wrote: > >> Hi, >> >> I noticed that ExecutorService objects are created in the constructors of >> ClusterMonitor, ApplicationMonitor, GroupMonitor, ParentComponentMonitor >> classes. These thread pools' size is 100 [1, 2, 3, 4]. >> >> Any idea why thread pools are created per monitor object? Is it not >> possible to share a common thread pool as per the current design? >> >> Stratos server thread count goes beyond 1500 when deploying 2 or 3 apps. >> And it keeps growing proportional to the deployed app count. This is a very >> high resource usage. >> > The primary reason for this is since we are using a fixed ThreadPool. Therefore, even if the threads are idling, they will remain in the system. We can avoid this by directly using a ThreadPoolExecutor which will provide more flexibility. For an example - *new ThreadPoolExecutor(50, 100, 120L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>())* This would mean the thread pool would have a min size of 50 static threads and can grow up to 100. Also, when the thread count is higher than 50, any thread that is idle for more than two minutes will be automatically removed. IMHO we can use a similar mechanism for the common thread pool as well, wdyt? > >> [1] >> https://github.com/apache/stratos/blob/stratos-4.1.x/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java#L108 >> >> [2] >> https://github.com/apache/stratos/blob/stratos-4.1.x/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java#L82 >> >> [3] >> https://github.com/apache/stratos/blob/stratos-4.1.x/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java#L88 >> >> [4] >> https://github.com/apache/stratos/blob/stratos-4.1.x/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java#L112 >> >> Thanks. >> >> -- >> Akila Ravihansa Perera >> WSO2 Inc.; http://wso2.com/ >> >> Blog: http://ravihansa3000.blogspot.com >> > > > > -- > Reka Thirunavukkarasu > Senior Software Engineer, > WSO2, Inc.:http://wso2.com, > Mobile: +94776442007 > > -- > <%2B94776442007> > <%2B94776442007> > Thanks and Regards, > > Isuru H. > <%2B94776442007> > +94 716 358 048 <%2B94776442007>* <http://wso2.com/>* > > > * <http://wso2.com/>* > > >