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> wrote:

>
>
> On Thu, Dec 3, 2015 at 10:20 AM, Isuru Haththotuwa <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>
>> wrote:
>>
>>> Hi Akila,
>>>
>>> On Sat, Nov 21, 2015 at 1:20 PM, Akila Ravihansa Perera <
>>> 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/>*
>
>
>

Reply via email to