You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2016/01/05 16:47:56 UTC

[47/50] [abbrv] stratos git commit: making min threads for a Thread pool configurable via a ratio and making stratos.manager.thread.pool & cloud.controller.thread.pool configurable

making min threads for a Thread pool configurable via a ratio and making stratos.manager.thread.pool & cloud.controller.thread.pool configurable


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/80882404
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/80882404
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/80882404

Branch: refs/heads/stratos-4.1.x
Commit: 8088240408b3b66fcbccf9740340a8790e050e7b
Parents: 991da8e
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Tue Jan 5 16:15:13 2016 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Tue Jan 5 16:15:13 2016 +0530

----------------------------------------------------------------------
 .../internal/AutoscalerServiceComponent.java          |  5 ++++-
 .../autoscaler/monitor/cluster/ClusterMonitor.java    |  5 ++++-
 .../monitor/component/ApplicationMonitor.java         |  5 ++++-
 .../autoscaler/monitor/component/GroupMonitor.java    |  6 +++++-
 .../monitor/component/ParentComponentMonitor.java     |  5 ++++-
 .../publisher/DASScalingDecisionPublisher.java        |  6 +++++-
 .../internal/CloudControllerServiceComponent.java     | 10 +++++++++-
 .../services/impl/CloudControllerServiceImpl.java     |  5 ++++-
 .../publisher/DASMemberInformationPublisher.java      |  6 +++++-
 .../publisher/DASMemberStatusPublisher.java           |  6 +++++-
 .../controller/util/CloudControllerConstants.java     |  2 ++
 .../stratos/common/constants/StratosConstants.java    |  2 ++
 .../threading/GracefulThreadPoolTerminator.java       | 14 ++++++++++----
 .../stratos/common/threading/StratosThreadPool.java   |  4 ++--
 .../statistics/LoadBalancerStatisticsExecutor.java    |  6 +++++-
 .../internal/StratosManagerServiceComponent.java      | 13 +++++++++++--
 .../manager/utils/StratosManagerConstants.java        |  6 +-----
 .../message/receiver/StratosEventReceiver.java        |  5 ++++-
 18 files changed, 86 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
index bcd4fc1..d9b6729 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
@@ -45,6 +45,7 @@ import org.apache.stratos.autoscaler.util.AutoscalerUtil;
 import org.apache.stratos.autoscaler.util.ConfUtil;
 import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
 import org.apache.stratos.common.Component;
+import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.common.services.ComponentStartUpSynchronizer;
 import org.apache.stratos.common.services.DistributedObjectProvider;
 import org.apache.stratos.common.threading.StratosThreadPool;
@@ -94,8 +95,10 @@ public class AutoscalerServiceComponent {
             XMLConfiguration conf = ConfUtil.getInstance(AutoscalerConstants.COMPONENTS_CONFIG).getConfiguration();
             int threadPoolSize = conf
                     .getInt(AutoscalerConstants.THREAD_POOL_SIZE_KEY, AutoscalerConstants.AUTOSCALER_THREAD_POOL_SIZE);
+            Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+            int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
             executor = StratosThreadPool.getExecutorService(AutoscalerConstants.AUTOSCALER_THREAD_POOL_ID, ((int) Math
-                    .ceil(threadPoolSize / 3)), threadPoolSize);
+                    .ceil(threadPoolSize / divisor)), threadPoolSize);
 
             int schedulerThreadPoolSize = conf.getInt(AutoscalerConstants.SCHEDULER_THREAD_POOL_SIZE_KEY,
                     AutoscalerConstants.AUTOSCALER_SCHEDULER_THREAD_POOL_SIZE);

http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
index ee936db..898a26d 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
@@ -108,8 +108,11 @@ public class ClusterMonitor extends Monitor {
                           String deploymentPolicyId) {
 
         int threadPoolSize = Integer.getInteger(AutoscalerConstants.MONITOR_THREAD_POOL_SIZE, 100);
+        Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+        int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
         executor = StratosThreadPool.getExecutorService(
-                AutoscalerConstants.MONITOR_THREAD_POOL_ID, ((int)Math.ceil(threadPoolSize/3)), threadPoolSize);
+                AutoscalerConstants.MONITOR_THREAD_POOL_ID, ((int)Math.ceil(threadPoolSize/divisor)),
+                threadPoolSize);
         this.clusterId = cluster.getClusterId();
         scheduler = StratosThreadPool.getScheduledExecutorService(clusterId, 2);
         readConfigurations();

http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
index c94ef7e..5836ee8 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
@@ -18,6 +18,7 @@
  */
 package org.apache.stratos.autoscaler.monitor.component;
 
+import org.apache.commons.configuration.SystemConfiguration;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.algorithms.NetworkPartitionAlgorithm;
@@ -79,8 +80,10 @@ public class ApplicationMonitor extends ParentComponentMonitor {
         super(application);
 
         int threadPoolSize = Integer.getInteger(AutoscalerConstants.MONITOR_THREAD_POOL_SIZE, 100);
+        Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+        int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
         this.executor = StratosThreadPool.getExecutorService(AutoscalerConstants.MONITOR_THREAD_POOL_ID,
-                ((int)Math.ceil(threadPoolSize/3)), threadPoolSize);
+                ((int)Math.ceil(threadPoolSize/divisor)), threadPoolSize);
 
         //setting the appId for the application
         this.appId = application.getUniqueIdentifier();

http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
index d5cfc3f..a9c320f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
@@ -40,6 +40,7 @@ import org.apache.stratos.autoscaler.pojo.policy.deployment.DeploymentPolicy;
 import org.apache.stratos.autoscaler.util.AutoscalerConstants;
 import org.apache.stratos.autoscaler.util.AutoscalerUtil;
 import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
+import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.common.partition.NetworkPartitionRef;
 import org.apache.stratos.common.partition.PartitionRef;
 import org.apache.stratos.common.threading.StratosThreadPool;
@@ -85,8 +86,11 @@ public class GroupMonitor extends ParentComponentMonitor {
         super(group);
 
         int threadPoolSize = Integer.getInteger(AutoscalerConstants.MONITOR_THREAD_POOL_SIZE, 100);
+        Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+        int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
         this.executor = StratosThreadPool.getExecutorService(
-                AutoscalerConstants.MONITOR_THREAD_POOL_ID, ((int)Math.ceil(threadPoolSize/3)),threadPoolSize);
+                AutoscalerConstants.MONITOR_THREAD_POOL_ID, ((int)Math.ceil(threadPoolSize/divisor)),
+                threadPoolSize);
 
         this.groupScalingEnabled = group.isGroupScalingEnabled();
         this.appId = appId;

http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
index 24983a9..a7e44cc 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
@@ -109,8 +109,11 @@ public abstract class ParentComponentMonitor extends Monitor {
         }
 
         // Create the executor service with identifier and thread pool size
+        Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+        int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
         executor = StratosThreadPool.getExecutorService(AutoscalerConstants.AUTOSCALER_THREAD_POOL_ID,
-                ((int)Math.ceil(AutoscalerConstants.AUTOSCALER_THREAD_POOL_SIZE/3)),AutoscalerConstants
+                ((int)Math.ceil(AutoscalerConstants.AUTOSCALER_THREAD_POOL_SIZE/divisor)),
+                AutoscalerConstants
                         .AUTOSCALER_THREAD_POOL_SIZE);
         networkPartitionContextsMap = new ConcurrentHashMap<String, NetworkPartitionContext>();
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/statistics/publisher/DASScalingDecisionPublisher.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/statistics/publisher/DASScalingDecisionPublisher.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/statistics/publisher/DASScalingDecisionPublisher.java
index ad0e77b..3b5ca4e 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/statistics/publisher/DASScalingDecisionPublisher.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/statistics/publisher/DASScalingDecisionPublisher.java
@@ -22,6 +22,7 @@ package org.apache.stratos.autoscaler.statistics.publisher;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.util.AutoscalerConstants;
+import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.common.threading.StratosThreadPool;
 import org.wso2.carbon.databridge.commons.Attribute;
 import org.wso2.carbon.databridge.commons.AttributeType;
@@ -46,8 +47,11 @@ public class DASScalingDecisionPublisher extends ScalingDecisionPublisher {
 
     public DASScalingDecisionPublisher() {
         super(createStreamDefinition(), DAS_THRIFT_CLIENT_NAME);
+        Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+        int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
         executor = StratosThreadPool.getExecutorService(AutoscalerConstants.STATS_PUBLISHER_THREAD_POOL_ID,
-                ((int)Math.ceil(STATS_PUBLISHER_THREAD_POOL_SIZE/3)), STATS_PUBLISHER_THREAD_POOL_SIZE);
+                ((int)Math.ceil(STATS_PUBLISHER_THREAD_POOL_SIZE/divisor)),
+                STATS_PUBLISHER_THREAD_POOL_SIZE);
     }
 
     public static DASScalingDecisionPublisher getInstance() {

http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
index 720bf17..569d566 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
@@ -33,7 +33,9 @@ import org.apache.stratos.cloud.controller.messaging.receiver.initializer.Initia
 import org.apache.stratos.cloud.controller.messaging.receiver.instance.status.InstanceStatusTopicReceiver;
 import org.apache.stratos.cloud.controller.services.CloudControllerService;
 import org.apache.stratos.cloud.controller.services.impl.CloudControllerServiceImpl;
+import org.apache.stratos.cloud.controller.util.CloudControllerConstants;
 import org.apache.stratos.common.Component;
+import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.common.services.ComponentStartUpSynchronizer;
 import org.apache.stratos.common.services.DistributedObjectProvider;
 import org.apache.stratos.common.threading.StratosThreadPool;
@@ -88,8 +90,14 @@ public class CloudControllerServiceComponent {
             log.debug("Activating CloudControllerServiceComponent...");
         }
         try {
+            Integer ccThreadPoolSize = Integer.getInteger(CloudControllerConstants.CC_THREAD_POOL_SIZE);
+            if (ccThreadPoolSize == null || ccThreadPoolSize <= 0) {
+                ccThreadPoolSize = THREAD_POOL_SIZE;
+            }
+            Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+            int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
             executor = StratosThreadPool.getExecutorService(THREAD_POOL_ID, ((int)Math.ceil
-                    (THREAD_POOL_SIZE/3)),THREAD_POOL_SIZE);
+                    (ccThreadPoolSize/divisor)),ccThreadPoolSize);
             scheduler = StratosThreadPool
                     .getScheduledExecutorService(SCHEDULER_THREAD_POOL_ID, SCHEDULER_THREAD_POOL_SIZE);
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
index f3e363f..f5901e1 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
@@ -35,6 +35,7 @@ import org.apache.stratos.cloud.controller.services.CloudControllerService;
 import org.apache.stratos.cloud.controller.util.CloudControllerConstants;
 import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
 import org.apache.stratos.common.Property;
+import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.common.domain.LoadBalancingIPType;
 import org.apache.stratos.common.threading.StratosThreadPool;
 import org.apache.stratos.messaging.domain.topology.*;
@@ -63,8 +64,10 @@ public class CloudControllerServiceImpl implements CloudControllerService {
     private ThreadPoolExecutor executor;
 
     public CloudControllerServiceImpl() {
+        Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+        int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
         executor = StratosThreadPool.getExecutorService("cloud.controller.instance.manager.thread" +
-                ".pool", 20, 50);
+                ".pool", 50/divisor, 50);
 
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberInformationPublisher.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberInformationPublisher.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberInformationPublisher.java
index 0d38967..fbba1c6 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberInformationPublisher.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberInformationPublisher.java
@@ -27,6 +27,7 @@ import org.apache.stratos.cloud.controller.domain.IaasProvider;
 import org.apache.stratos.cloud.controller.domain.InstanceMetadata;
 import org.apache.stratos.cloud.controller.domain.MemberContext;
 import org.apache.stratos.cloud.controller.util.CloudControllerConstants;
+import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.common.threading.StratosThreadPool;
 import org.wso2.carbon.databridge.commons.Attribute;
 import org.wso2.carbon.databridge.commons.AttributeType;
@@ -52,8 +53,11 @@ public class DASMemberInformationPublisher extends MemberInformationPublisher {
 
     private DASMemberInformationPublisher() {
         super(createStreamDefinition(), DAS_THRIFT_CLIENT_NAME);
+        Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+        int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
         executor = StratosThreadPool.getExecutorService(CloudControllerConstants.STATS_PUBLISHER_THREAD_POOL_ID,
-                ((int)Math.ceil(CloudControllerConstants.STATS_PUBLISHER_THREAD_POOL_SIZE/3)), CloudControllerConstants
+                ((int)Math.ceil(CloudControllerConstants.STATS_PUBLISHER_THREAD_POOL_SIZE/divisor)),
+                CloudControllerConstants
                         .STATS_PUBLISHER_THREAD_POOL_SIZE);
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberStatusPublisher.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberStatusPublisher.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberStatusPublisher.java
index f28d2c8..a9f1cb7 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberStatusPublisher.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/DASMemberStatusPublisher.java
@@ -22,6 +22,7 @@ package org.apache.stratos.cloud.controller.statistics.publisher;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.cloud.controller.util.CloudControllerConstants;
+import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.common.threading.StratosThreadPool;
 import org.wso2.carbon.databridge.commons.Attribute;
 import org.wso2.carbon.databridge.commons.AttributeType;
@@ -45,8 +46,11 @@ public class DASMemberStatusPublisher extends MemberStatusPublisher {
 
     private DASMemberStatusPublisher() {
         super(createStreamDefinition(), DAS_THRIFT_CLIENT_NAME);
+        Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+        int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
         executor = StratosThreadPool.getExecutorService(CloudControllerConstants.STATS_PUBLISHER_THREAD_POOL_ID,
-                ((int)Math.ceil(CloudControllerConstants.STATS_PUBLISHER_THREAD_POOL_SIZE/3)), CloudControllerConstants
+                ((int)Math.ceil(CloudControllerConstants.STATS_PUBLISHER_THREAD_POOL_SIZE/divisor)),
+                CloudControllerConstants
                         .STATS_PUBLISHER_THREAD_POOL_SIZE);
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
index 29facf0..bc957c0 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
@@ -349,4 +349,6 @@ public final class CloudControllerConstants {
     public static final String IAAS_TYPE_EC2 = "ec2";
     public static final String INSTANCE_CTXT_EC2_REGION = "EC2_REGION";
     public static final String INSTANCE_CTXT_EC2_AVAILABILITY_ZONE = "EC2_AVAILABILITY_ZONE";
+
+    public static final String CC_THREAD_POOL_SIZE = "cc.thread.pool.size";
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
index 143de54..83495f9 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
@@ -212,5 +212,7 @@ public class StratosConstants {
 
     public static final String NOT_DEFINED = "not-defined";
     public static final String CLUSTER_INSTANCE_ID = "cluster.instance.id";
+    public static final String THREAD_POOL_INITIAL_MIN_MAX_RATIO = "thread.pool.initial.min.max.ratio";
+    public static final int DEFAULT_THREAD_POOL_MIN_MAX_RATIO = 3;
 }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/GracefulThreadPoolTerminator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/GracefulThreadPoolTerminator.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/GracefulThreadPoolTerminator.java
index 2ccfc45..ce6c12c 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/GracefulThreadPoolTerminator.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/GracefulThreadPoolTerminator.java
@@ -41,20 +41,26 @@ public class GracefulThreadPoolTerminator implements Callable<String> {
     @Override
     public String call() {
         // try to shut down gracefully
-        log.info("Attempting to gracefully shut down thread pool " +  threadPoolId);
+        if(log.isDebugEnabled()) {
+            log.debug("Attempting to gracefully shut down thread pool " + threadPoolId);
+        }
         executor.shutdown();
         // wait 10 secs till terminated
         try {
             if (!executor.awaitTermination(10, TimeUnit.SECONDS)) {
-                log.info("Thread Pool [id] " + threadPoolId + " did not finish all tasks before " +
-                        "timeout, forcefully shutting down");
+                if(log.isDebugEnabled()) {
+                    log.debug("Thread Pool [id] " + threadPoolId + " did not finish all tasks before " +
+                            "timeout, forcefully shutting down");
+                }
                 executor.shutdownNow();
             }
         } catch (InterruptedException e) {
             // interrupted, shutdown now
             executor.shutdownNow();
         }
-        log.info("Successfully shut down thread pool " +  threadPoolId);
+        if (log.isDebugEnabled()) {
+            log.debug("Successfully shut down thread pool " + threadPoolId);
+        }
         return threadPoolId;
     }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/StratosThreadPool.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/StratosThreadPool.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/StratosThreadPool.java
index 1f4e5c8..0e1ffa9 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/StratosThreadPool.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/StratosThreadPool.java
@@ -52,12 +52,12 @@ public class StratosThreadPool {
         if (executor == null) {
             synchronized (executorServiceMapLock) {
                 if (executor == null) {
-                    int taskQueueSize = initialSize > 3 ? (int)Math.ceil(initialSize/3) : 1;
+                    int taskQueueSize = initialSize > 4 ? (int)Math.ceil(initialSize/4) : 1;
                     executor = new ThreadPoolExecutor(initialSize, maxSize, 60L, TimeUnit.SECONDS,
                             new LinkedBlockingQueue<Runnable>(taskQueueSize), new StratosThreadFactory(identifier));
                     executorMap.put(identifier, executor);
                     log.info(String.format("Thread pool created: [type] Executor [id] %s " +
-                            "[initial size] %d [max size] %d", identifier, initialSize, maxSize));
+                            "[initial size] %d [max size] %d [queue length] %d", identifier, initialSize, maxSize, taskQueueSize));
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/statistics/LoadBalancerStatisticsExecutor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/statistics/LoadBalancerStatisticsExecutor.java b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/statistics/LoadBalancerStatisticsExecutor.java
index 486b98b..d31b702 100644
--- a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/statistics/LoadBalancerStatisticsExecutor.java
+++ b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/statistics/LoadBalancerStatisticsExecutor.java
@@ -20,6 +20,7 @@ package org.apache.stratos.load.balancer.statistics;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.common.threading.StratosThreadPool;
 import org.apache.stratos.load.balancer.util.LoadBalancerConstants;
 
@@ -38,8 +39,11 @@ public class LoadBalancerStatisticsExecutor {
     private ThreadPoolExecutor executor;
 
     private LoadBalancerStatisticsExecutor() {
+        Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+        int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
         executor = StratosThreadPool.getExecutorService(LoadBalancerConstants.LOAD_BALANCER_THREAD_POOL_ID,
-                ((int)Math.ceil(LoadBalancerConstants.LOAD_BALANCER_DEFAULT_THREAD_POOL_SIZE/3)), LoadBalancerConstants
+                ((int)Math.ceil(LoadBalancerConstants.LOAD_BALANCER_DEFAULT_THREAD_POOL_SIZE/divisor)),
+                LoadBalancerConstants
                         .LOAD_BALANCER_DEFAULT_THREAD_POOL_SIZE);
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java
index 1b48603..dab0540 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/StratosManagerServiceComponent.java
@@ -19,9 +19,11 @@
 package org.apache.stratos.manager.internal;
 
 import com.hazelcast.core.HazelcastInstance;
+import org.apache.commons.lang.IncompleteArgumentException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.common.Component;
+import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.common.services.ComponentStartUpSynchronizer;
 import org.apache.stratos.common.services.DistributedObjectProvider;
 import org.apache.stratos.common.threading.StratosThreadPool;
@@ -36,6 +38,7 @@ import org.apache.stratos.manager.messaging.receiver.StratosManagerTopologyEvent
 import org.apache.stratos.manager.user.management.TenantUserRoleManager;
 import org.apache.stratos.manager.user.management.exception.UserManagerException;
 import org.apache.stratos.common.util.CartridgeConfigFileReader;
+import org.apache.stratos.manager.utils.StratosManagerConstants;
 import org.apache.stratos.manager.utils.UserRoleCreator;
 import org.apache.stratos.messaging.broker.publish.EventPublisherPool;
 import org.apache.stratos.messaging.util.MessagingUtil;
@@ -98,8 +101,14 @@ public class StratosManagerServiceComponent {
             log.debug("Activating StratosManagerServiceComponent...");
         }
         try {
-            executor = StratosThreadPool.getExecutorService(THREAD_POOL_ID, ((int)Math.ceil(THREAD_POOL_SIZE/3))
-                    , THREAD_POOL_SIZE);
+            Integer smThreadPoolSize = Integer.getInteger(StratosManagerConstants.SM_THREAD_POOL_SIZE);
+            if (smThreadPoolSize == null || smThreadPoolSize <= 0) {
+                smThreadPoolSize = THREAD_POOL_SIZE;
+            }
+            Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+            int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
+            executor = StratosThreadPool.getExecutorService(THREAD_POOL_ID, ((int)Math.ceil(smThreadPoolSize/divisor))
+                    , smThreadPoolSize);
             scheduler = StratosThreadPool
                     .getScheduledExecutorService(SCHEDULER_THREAD_POOL_ID, SCHEDULER_THREAD_POOL_SIZE);
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/StratosManagerConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/StratosManagerConstants.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/StratosManagerConstants.java
index 171f689..0929506 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/StratosManagerConstants.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/StratosManagerConstants.java
@@ -24,9 +24,5 @@ package org.apache.stratos.manager.utils;
  */
 public class StratosManagerConstants {
 
-    public static final String DEFAULT_CRON = "1 * * * * ? *";
-    public static final String TENANT_SYNC_TASK_TYPE = "TENANT_SYNC_TASK_TYPE";
-    public static final String TENANT_SYNC_TASK_NAME = "TENANT_SYNC_TASK";
-    public static final String APPLICATION_SIGNUP_SYNC_TASK_TYPE = "APPLICATION_SIGNUP_SYNC_TASK_TYPE";
-    public static final String APPLICATION_SIGNUP_SYNC_TASK_NAME = "APPLICATION_SIGNUP_SYNC_TASK";
+    public static final String  SM_THREAD_POOL_SIZE = "sm.thread.pool.size";
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/80882404/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/StratosEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/StratosEventReceiver.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/StratosEventReceiver.java
index 0c17efb..34c0b28 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/StratosEventReceiver.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/StratosEventReceiver.java
@@ -22,6 +22,7 @@ package org.apache.stratos.messaging.message.receiver;
 import java.util.concurrent.ThreadPoolExecutor;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.common.threading.StratosThreadPool;
 import org.apache.stratos.messaging.listener.EventListener;
 
@@ -63,7 +64,9 @@ public abstract class StratosEventReceiver {
 
     public StratosEventReceiver () {
         this.threadPoolId = STRATOS_EVENT_RECEIEVER_THREAD_POOL_ID;
-        this.executor = StratosThreadPool.getExecutorService(threadPoolId, (int)Math.ceil(threadPoolSize/3),
+        Integer ratio = Integer.getInteger(StratosConstants.THREAD_POOL_INITIAL_MIN_MAX_RATIO);
+        int divisor = ratio != null && ratio >= 1 ? ratio : StratosConstants.DEFAULT_THREAD_POOL_MIN_MAX_RATIO;
+        this.executor = StratosThreadPool.getExecutorService(threadPoolId, (int)Math.ceil(threadPoolSize/divisor),
                 threadPoolSize);
     }