This is an automated email from the ASF dual-hosted git repository. zjffdu pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/zeppelin.git
The following commit(s) were added to refs/heads/master by this push: new 0d3ac8a [ZEPPELIN-3978] Change Jetty Server to use QueuedThreadPool and make it configurable 0d3ac8a is described below commit 0d3ac8a56f3c7f53ecf2888ea853252794daa88a Author: fdai <f...@twitter.com> AuthorDate: Fri Feb 1 10:49:07 2019 -0800 [ZEPPELIN-3978] Change Jetty Server to use QueuedThreadPool and make it configurable ### What is this PR for? By default Jetty Server only supports 200 threads. On our daily use cases, we normally have more than 100 users on the single Zeppelin Server, which will create more than 200 threads in Jetty. That could cause slowness or stuck because users could not receive WebSocket message. Add configurable param feature to scale up the performance for Single Zeppelin Server whenever needs it ### What type of PR is it? Improvement ### Todos * [ ] - Task ### What is the Jira issue? https://issues.apache.org/jira/browse/ZEPPELIN-3978 [ZEPPELIN-3978] ### How should this be tested? * First time? Setup Travis CI as described on https://zeppelin.apache.org/contribution/contributions.html#continuous-integration * Strongly recommended: add automated unit tests for any new or changed behavior * Outline any manual steps to test the PR here. ### Screenshots (if appropriate) ### Questions: * Does the licenses files need update? No * Is there breaking changes for older versions? No * Does this needs documentation? No Author: fdai <f...@twitter.com> Closes #3294 from fred521/mainStream/fdai_increase_thread_pool_number and squashes the following commits: 62986a225 [fdai] add description to template for new param 23e79a953 [fdai] make the param to be configurable ff5b6a140 [fdai] custom the thread number to have better performance --- conf/zeppelin-site.xml.template | 22 ++++++++++++++++++++++ .../zeppelin/conf/ZeppelinConfiguration.java | 3 +++ .../org/apache/zeppelin/server/ZeppelinServer.java | 8 +++++++- 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/conf/zeppelin-site.xml.template b/conf/zeppelin-site.xml.template index 88b8d9a..4ce336b 100755 --- a/conf/zeppelin-site.xml.template +++ b/conf/zeppelin-site.xml.template @@ -495,6 +495,28 @@ <!-- <property> + <name>zeppelin.server.jetty.thread.pool.max</name> + <value>400</value> + <description>Max Thread pool number for QueuedThreadPool in Jetty Server</description> +</property> +--> +<!-- +<property> + <name>zeppelin.server.jetty.thread.pool.min</name> + <value>8</value> + <description>Min Thread pool number for QueuedThreadPool in Jetty Server</description> +</property> +--> +<!-- +<property> + <name>zeppelin.server.jetty.thread.pool.timeout</name> + <value>30</value> + <description>Timeout number for QueuedThreadPool in Jetty Server</description> +</property> +--> + +<!-- +<property> <name>zeppelin.server.authorization.header.clear</name> <value>true</value> <description>Authorization header to be cleared if server is running as authcBasic</description> diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java index a2aac9e..6618606 100644 --- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java +++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java @@ -828,6 +828,9 @@ public class ZeppelinConfiguration extends XMLConfiguration { ZEPPELIN_SERVER_DEFAULT_DIR_ALLOWED("zeppelin.server.default.dir.allowed", false), ZEPPELIN_SERVER_XFRAME_OPTIONS("zeppelin.server.xframe.options", "SAMEORIGIN"), ZEPPELIN_SERVER_JETTY_NAME("zeppelin.server.jetty.name", null), + ZEPPELIN_SERVER_JETTY_THREAD_POOL_MAX("zeppelin.server.jetty.thread.pool.max", 400), + ZEPPELIN_SERVER_JETTY_THREAD_POOL_MIN("zeppelin.server.jetty.thread.pool.min", 8), + ZEPPELIN_SERVER_JETTY_THREAD_POOL_TIMEOUT("zeppelin.server.jetty.thread.pool.timeout", 30), ZEPPELIN_SERVER_JETTY_REQUEST_HEADER_SIZE("zeppelin.server.jetty.request.header.size", 8192), ZEPPELIN_SERVER_AUTHORIZATION_HEADER_CLEAR("zeppelin.server.authorization.header.clear", true), ZEPPELIN_SERVER_STRICT_TRANSPORT("zeppelin.server.strict.transport", "max-age=631138519"), diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java b/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java index f924fbd..b9194ac 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java @@ -76,6 +76,8 @@ import org.eclipse.jetty.servlet.FilterHolder; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.util.ssl.SslContextFactory; +import org.eclipse.jetty.util.thread.QueuedThreadPool; +import org.eclipse.jetty.util.thread.ThreadPool; import org.eclipse.jetty.webapp.WebAppContext; import org.eclipse.jetty.websocket.servlet.WebSocketServlet; import org.glassfish.hk2.api.ServiceLocator; @@ -276,7 +278,11 @@ public class ZeppelinServer extends ResourceConfig { } private static Server setupJettyServer(ZeppelinConfiguration conf) { - final Server server = new Server(); + ThreadPool threadPool = + new QueuedThreadPool(conf.getInt(ConfVars.ZEPPELIN_SERVER_JETTY_THREAD_POOL_MAX), + conf.getInt(ConfVars.ZEPPELIN_SERVER_JETTY_THREAD_POOL_MIN), + conf.getInt(ConfVars.ZEPPELIN_SERVER_JETTY_THREAD_POOL_TIMEOUT)); + final Server server = new Server(threadPool); ServerConnector connector; if (conf.useSsl()) {