make server threads configurable with server.properties file (#11540)

Co-authored-by: Ahmed Awlaqi <ahmed.awlaqi@sue.nl>
Co-authored-by: Daan Hoogland <dahn@apache.org>
This commit is contained in:
dahn 2025-09-02 08:56:15 +02:00 committed by GitHub
parent abe41add86
commit 76ef8d31f8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 2 deletions

View File

@ -58,3 +58,7 @@ access.log=/var/log/cloudstack/management/access.log
# The deployment mode for the extensions
extensions.deployment.mode=@EXTENSIONSDEPLOYMENTMODE@
# Thread pool configuration
#threads.min=10
#threads.max=500

View File

@ -86,6 +86,8 @@ public class ServerDaemon implements Daemon {
private static final int DEFAULT_REQUEST_CONTENT_SIZE = 1048576;
private static final String REQUEST_MAX_FORM_KEYS_KEY = "request.max.form.keys";
private static final int DEFAULT_REQUEST_MAX_FORM_KEYS = 5000;
private static final String THREADS_MIN = "threads.min";
private static final String THREADS_MAX = "threads.max";
////////////////////////////////////////////////////////
/////////////// Server Configuration ///////////////////
@ -106,6 +108,8 @@ public class ServerDaemon implements Daemon {
private String keystoreFile;
private String keystorePassword;
private String webAppLocation;
private int minThreads;
private int maxThreads;
//////////////////////////////////////////////////
/////////////// Public methods ///////////////////
@ -147,6 +151,8 @@ public class ServerDaemon implements Daemon {
setSessionTimeout(Integer.valueOf(properties.getProperty(SESSION_TIMEOUT, "30")));
setMaxFormContentSize(Integer.valueOf(properties.getProperty(REQUEST_CONTENT_SIZE_KEY, String.valueOf(DEFAULT_REQUEST_CONTENT_SIZE))));
setMaxFormKeys(Integer.valueOf(properties.getProperty(REQUEST_MAX_FORM_KEYS_KEY, String.valueOf(DEFAULT_REQUEST_MAX_FORM_KEYS))));
setMinThreads(Integer.valueOf(properties.getProperty(THREADS_MIN, "10")));
setMaxThreads(Integer.valueOf(properties.getProperty(THREADS_MAX, "500")));
} catch (final IOException e) {
logger.warn("Failed to read configuration from server.properties file", e);
} finally {
@ -164,8 +170,8 @@ public class ServerDaemon implements Daemon {
public void start() throws Exception {
// Thread pool
final QueuedThreadPool threadPool = new QueuedThreadPool();
threadPool.setMinThreads(10);
threadPool.setMaxThreads(500);
threadPool.setMinThreads(minThreads);
threadPool.setMaxThreads(maxThreads);
// Jetty Server
server = new Server(threadPool);
@ -394,4 +400,12 @@ public class ServerDaemon implements Daemon {
public void setMaxFormKeys(int maxFormKeys) {
this.maxFormKeys = maxFormKeys;
}
public void setMinThreads(int minThreads) {
this.minThreads = minThreads;
}
public void setMaxThreads(int maxThreads) {
this.maxThreads = maxThreads;
}
}