From b58492239c4c3acc3b4434625d08827450fde078 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 03 May 2013 19:15:05 -0400 Subject: [PATCH] GO NIO connector thread pool size setting --- src/main/java/com/gitblit/GitBlitServer.java | 14 ++++++++------ releases.moxie | 2 ++ src/main/distrib/data/gitblit.properties | 7 +++++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/releases.moxie b/releases.moxie index ce71772..7c0ec8f 100644 --- a/releases.moxie +++ b/releases.moxie @@ -33,6 +33,7 @@ - Updated Japanese translation additions: + - Added GO http/https connector thread pool size setting - Added a server setting to force a particular translation/Locale for all sessions - Added smart Git Daemon serving. If enabled, git:// access will be offered for any repository which permits anonymous access. If the repository permits anonymous cloning, anonymous git:// clone will be permitted while anonmymous git:// pushes will be rejected. - Option to automatically tag branch tips on each push with an incremental revision number @@ -81,6 +82,7 @@ - { name: 'git.daemonPort', defaultValue: 0 } - { name: 'git.defaultIncrementalPushTagPrefix', defaultValue: 'r' } - { name: 'web.forceDefaultLocale', defaultValue: ' ' } + - { name: 'server.nioThreadPoolSize', defaultValue: 50 } } # diff --git a/src/main/distrib/data/gitblit.properties b/src/main/distrib/data/gitblit.properties index f47ad07..43185f5 100644 --- a/src/main/distrib/data/gitblit.properties +++ b/src/main/distrib/data/gitblit.properties @@ -1250,6 +1250,13 @@ # RESTART REQUIRED server.useNio = true +# If using Jetty NIO connectors, specify the maximum number of concurrent +# http/https worker threads to allow. +# +# SINCE 1.3.0 +# RESTART REQUIRED +server.nioThreadPoolSize = 50 + # Context path for the GO application. You might want to change the context # path if running Gitblit behind a proxy layer such as mod_proxy. # diff --git a/src/main/java/com/gitblit/GitBlitServer.java b/src/main/java/com/gitblit/GitBlitServer.java index 79d3d6b..a41b8a2 100644 --- a/src/main/java/com/gitblit/GitBlitServer.java +++ b/src/main/java/com/gitblit/GitBlitServer.java @@ -203,7 +203,7 @@ // conditionally configure the http connector if (params.port > 0) { - Connector httpConnector = createConnector(params.useNIO, params.port); + Connector httpConnector = createConnector(params.useNIO, settings.getInteger(Keys.server.nioThreadPoolSize, 50), params.port); String bindInterface = settings.getString(Keys.server.httpBindInterface, null); if (!StringUtils.isEmpty(bindInterface)) { logger.warn(MessageFormat.format("Binding connector on port {0,number,0} to {1}", @@ -262,7 +262,7 @@ if (serverKeyStore.exists()) { Connector secureConnector = createSSLConnector(params.alias, serverKeyStore, serverTrustStore, params.storePassword, - caRevocationList, params.useNIO, params.securePort, params.requireClientCertificates); + caRevocationList, params.useNIO, settings.getInteger(Keys.server.nioThreadPoolSize, 50), params.securePort, params.requireClientCertificates); String bindInterface = settings.getString(Keys.server.httpsBindInterface, null); if (!StringUtils.isEmpty(bindInterface)) { logger.warn(MessageFormat.format( @@ -410,15 +410,16 @@ * * @param useNIO * @param port + * @param maxThreads * @return an http connector */ - private Connector createConnector(boolean useNIO, int port) { + private Connector createConnector(boolean useNIO, int port, int maxThreads) { Connector connector; if (useNIO) { logger.info("Setting up NIO SelectChannelConnector on port " + port); SelectChannelConnector nioconn = new SelectChannelConnector(); nioconn.setSoLingerTime(-1); - nioconn.setThreadPool(new QueuedThreadPool(20)); + nioconn.setThreadPool(new QueuedThreadPool(maxThreads)); connector = nioconn; } else { logger.info("Setting up SocketConnector on port " + port); @@ -443,12 +444,13 @@ * @param storePassword * @param caRevocationList * @param useNIO + * @param nioThreadPoolSize * @param port * @param requireClientCertificates * @return an https connector */ private Connector createSSLConnector(String certAlias, File keyStore, File clientTrustStore, - String storePassword, File caRevocationList, boolean useNIO, int port, + String storePassword, File caRevocationList, boolean useNIO, int nioThreadPoolSize, int port, boolean requireClientCertificates) { GitblitSslContextFactory factory = new GitblitSslContextFactory(certAlias, keyStore, clientTrustStore, storePassword, caRevocationList); @@ -462,7 +464,7 @@ } else { factory.setWantClientAuth(true); } - ssl.setThreadPool(new QueuedThreadPool(20)); + ssl.setThreadPool(new QueuedThreadPool(nioThreadPoolSize)); connector = ssl; } else { logger.info("Setting up NIO SslSocketConnector on port " + port); -- Gitblit v1.9.1