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

Reply via email to