You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2014/04/30 21:06:28 UTC
git commit: AMBARI-5639. Ambari will not respond to connections when
CPU exceeds Jetty threads (ncole)
Repository: ambari
Updated Branches:
refs/heads/trunk 7140d3c36 -> e28a1f506
AMBARI-5639. Ambari will not respond to connections when CPU exceeds Jetty threads (ncole)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e28a1f50
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e28a1f50
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e28a1f50
Branch: refs/heads/trunk
Commit: e28a1f506a314ce60c381abba50d846b3927905b
Parents: 7140d3c
Author: Nate Cole <nc...@hortonworks.com>
Authored: Wed Apr 30 13:50:19 2014 -0400
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Wed Apr 30 13:50:25 2014 -0400
----------------------------------------------------------------------
ambari-server/conf/unix/ambari.properties | 4 ++
.../server/configuration/Configuration.java | 43 +++++++++++++----
.../ambari/server/controller/AmbariServer.java | 6 ++-
.../server/configuration/ConfigurationTest.java | 51 ++++++++++++++------
4 files changed, 78 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/e28a1f50/ambari-server/conf/unix/ambari.properties
----------------------------------------------------------------------
diff --git a/ambari-server/conf/unix/ambari.properties b/ambari-server/conf/unix/ambari.properties
index 5880dfe..764328e 100644
--- a/ambari-server/conf/unix/ambari.properties
+++ b/ambari-server/conf/unix/ambari.properties
@@ -42,3 +42,7 @@ server.execution.scheduler.misfire.toleration.minutes=480
# Default timeout in seconds before task is killed
agent.task.timeout=600
+
+# thread pool maximums
+client.threadpool.size.max=25
+agent.threadpool.size.max=25
http://git-wip-us.apache.org/repos/asf/ambari/blob/e28a1f50/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
index 19b3c9a..6576861 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
@@ -17,7 +17,15 @@
*/
package org.apache.ambari.server.configuration;
-import com.google.inject.Singleton;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
+
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.orm.JPATableGenerationStrategy;
import org.apache.ambari.server.orm.PersistenceType;
@@ -30,14 +38,8 @@ import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Map.Entry;
+
+import com.google.inject.Singleton;
/**
@@ -274,6 +276,13 @@ public class Configuration {
private static final String REPO_SUFFIX_UBUNTU = "/dists/HDP/Release.gpg,/dists/HDP/Release";
private static final String PARALLEL_STAGE_EXECUTION_DEFAULT = "true";
+
+ private static final String CLIENT_THREADPOOL_SIZE_KEY = "client.threadpool.size.max";
+ private static final int CLIENT_THREADPOOL_SIZE_DEFAULT = 25;
+ private static final String AGENT_THREADPOOL_SIZE_KEY = "agent.threadpool.size.max";
+ private static final int AGENT_THREADPOOL_SIZE_DEFAULT = 25;
+
+
private static final Logger LOG = LoggerFactory.getLogger(
Configuration.class);
private Properties properties;
@@ -968,4 +977,20 @@ public class Configuration {
public String getServerJDBCSchemaName() {
return properties.getProperty(SERVER_JDBC_SCHEMA_NAME, SERVER_DB_NAME_DEFAULT);
}
+
+ /**
+ * @return max thread pool size for clients, default 25
+ */
+ public int getClientThreadPoolSize() {
+ return Integer.parseInt(properties.getProperty(
+ CLIENT_THREADPOOL_SIZE_KEY, String.valueOf(CLIENT_THREADPOOL_SIZE_DEFAULT)));
+ }
+
+ /**
+ * @return max thread pool size for agents, default 25
+ */
+ public int getAgentThreadPoolSize() {
+ return Integer.parseInt(properties.getProperty(
+ AGENT_THREADPOOL_SIZE_KEY, String.valueOf(AGENT_THREADPOOL_SIZE_DEFAULT)));
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/e28a1f50/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
index 91632c0..cdb7fea 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
@@ -341,8 +341,10 @@ public class AmbariServer {
}
//Set jetty thread pool
- serverForAgent.setThreadPool(new QueuedThreadPool(25));
- server.setThreadPool(new QueuedThreadPool(25));
+ serverForAgent.setThreadPool(
+ new QueuedThreadPool(configs.getAgentThreadPoolSize()));
+ server.setThreadPool(
+ new QueuedThreadPool(configs.getClientThreadPoolSize()));
/* Configure the API server to use the NIO connectors */
SelectChannelConnector apiConnector;
http://git-wip-us.apache.org/repos/asf/ambari/blob/e28a1f50/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java b/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
index 8da66f4..c47c7fb 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
@@ -18,10 +18,22 @@
package org.apache.ambari.server.configuration;
-import com.google.inject.Guice;
-import com.google.inject.Inject;
-import com.google.inject.Injector;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.powermock.api.easymock.PowerMock.mockStatic;
+import static org.powermock.api.easymock.PowerMock.replayAll;
+import static org.powermock.api.easymock.PowerMock.verifyAll;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.util.Map;
+import java.util.Properties;
+
import junit.framework.Assert;
+
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.commons.io.FileUtils;
@@ -38,18 +50,9 @@ import org.powermock.api.support.membermodification.MemberMatcher;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
-import static org.mockito.Mockito.*;
-import static org.powermock.api.easymock.PowerMock.mockStatic;
-import static org.powermock.api.easymock.PowerMock.replayAll;
-import static org.powermock.api.easymock.PowerMock.verifyAll;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.util.Map;
-import java.util.Properties;
+import com.google.inject.Guice;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
@RunWith(PowerMockRunner.class)
@@ -258,4 +261,22 @@ public class ConfigurationTest {
conf.getLocalDatabaseUrl();
}
+ @Test()
+ public void testServerPoolSizes() {
+ Properties ambariProperties = new Properties();
+ Configuration conf = new Configuration(ambariProperties);
+
+ Assert.assertEquals(25, conf.getClientThreadPoolSize());
+ Assert.assertEquals(25, conf.getAgentThreadPoolSize());
+
+ ambariProperties = new Properties();
+ ambariProperties.setProperty("client.threadpool.size.max", "4");
+ ambariProperties.setProperty("agent.threadpool.size.max", "82");
+ conf = new Configuration(ambariProperties);
+
+ Assert.assertEquals(4, conf.getClientThreadPoolSize());
+ Assert.assertEquals(82, conf.getAgentThreadPoolSize());
+
+ }
+
}