Great work Isuru! It might be better to document the list of thread pools, their usage and how to tune them.
Thanks On Tuesday, January 5, 2016, Isuru Haththotuwa <isu...@apache.org> wrote: > The following are the list of improvements done: > > - make the threads pools dynamic by allowing to grow/shrink when > required > - determining the min threads that a thread pool should have based on > a ratio (configurable) between max and min number of threads > - using a custom thread factory (extending from > java.util.concurrent.ThreadFactory) > - give a proper name to created threads based on the context (useful > for identifying the thread and its origin for debugging purposes) > - adding graceful thread pool termination support > - using scheduled thread pools per Monitor than using a static > scheduled thread pool for all monitors > > Will commit the changes. > > On Thu, Dec 3, 2015 at 5:41 PM, Imesh Gunaratne <im...@apache.org > <javascript:_e(%7B%7D,'cvml','im...@apache.org');>> wrote: > >> >> >> On Thu, Dec 3, 2015 at 10:20 AM, Isuru Haththotuwa <isu...@apache.org >> <javascript:_e(%7B%7D,'cvml','isu...@apache.org');>> wrote: >>> >>> This is in addition to the scheduled executor services we are using. >>> Shall we optimize the StratosThreadPool implementation to dynamically >>> shrink and grow when required? We are currently using fixed thread pools. >>> >> +1 >> >>> >>> >>> >>> On Sun, Nov 22, 2015 at 12:15 PM, Imesh Gunaratne <im...@apache.org >>> <javascript:_e(%7B%7D,'cvml','im...@apache.org');>> wrote: >>> >>>> Hi Akila, >>>> >>>> On Sat, Nov 21, 2015 at 1:20 PM, Akila Ravihansa Perera < >>>> raviha...@wso2.com <javascript:_e(%7B%7D,'cvml','raviha...@wso2.com');> >>>> > wrote: >>>> >>>>> >>>>> 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? >>>>> >>>> >>>> No, we do not create a thread pool per monitor object, have a look at >>>> the code carefully: >>>> >>>> executorService = StratosThreadPool.getExecutorService( >>>> AutoscalerConstants.MONITOR_THREAD_POOL_ID, >>>> threadPoolSize); >>>> >>>> The above statement ask Stratos Thread Pool class to return an executor >>>> service with the name AutoscalerConstants.MONITOR_THREAD_POOL_ID: >>>> >>>> public static ExecutorService getExecutorService(String identifier, int >>>> threadPoolSize) { >>>> ExecutorService executorService = >>>> executorServiceMap.get(identifier); >>>> if (executorService == null) { >>>> synchronized (executorServiceMapLock) { >>>> if (executorService == null) { >>>> executorService = >>>> Executors.newFixedThreadPool(threadPoolSize); >>>> executorServiceMap.put(identifier, executorService); >>>> log.info(String.format("Thread pool created: >>>> [type] Executor Service [id] %s [size] %d", identifier, threadPoolSize)); >>>> } >>>> } >>>> } >>>> return executorService; >>>> } >>>> >>>> This will only create an executor service once for a given identifier. >>>> >>>> Thanks >>>> >>>> >>>>> >>>>> 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. >>>>> >>>>> [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 >>>>> >>>> >>>> >>>> >>>> -- >>>> Imesh Gunaratne >>>> >>>> Senior Technical Lead, WSO2 >>>> Committer & PMC Member, Apache Stratos >>>> >>>> -- >>>> Thanks and Regards, >>>> >>>> Isuru H. >>>> +94 716 358 048* <http://wso2.com/>* >>>> >>>> >>>> * <http://wso2.com/>* >>>> >>>> >>>> >> >> >> -- >> Imesh Gunaratne >> >> Senior Technical Lead, WSO2 >> Committer & PMC Member, Apache Stratos >> >> -- >> Thanks and Regards, >> >> Isuru H. >> +94 716 358 048* <http://wso2.com/>* >> >> >> * <http://wso2.com/>* >> >> >> -- Imesh Gunaratne Senior Technical Lead, WSO2 Committer & PMC Member, Apache Stratos