diff --git a/Documentation/config-gerrit.txt b/Documentation/config-gerrit.txt index 89ea2e876e..f219e484ad 100644 --- a/Documentation/config-gerrit.txt +++ b/Documentation/config-gerrit.txt @@ -4239,7 +4239,8 @@ Number of threads to use when executing SSH command requests. If additional requests are received while all threads are busy they are queued and serviced in a first-come-first-served order. + -By default, 2x the number of CPUs available to the JVM. +By default, 2x the number of CPUs available to the JVM (but at least 4 +threads). + [NOTE] When SSH daemon is enabled then this setting also defines the max number of diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/ThreadSettingsConfig.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/ThreadSettingsConfig.java index 6cb32cc0e5..c20e0a4ea4 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/config/ThreadSettingsConfig.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/ThreadSettingsConfig.java @@ -28,7 +28,7 @@ public class ThreadSettingsConfig { @Inject ThreadSettingsConfig(@GerritServerConfig Config cfg) { int cores = Runtime.getRuntime().availableProcessors(); - sshdThreads = cfg.getInt("sshd", "threads", 2 * cores); + sshdThreads = cfg.getInt("sshd", "threads", Math.max(4, 2 * cores)); httpdMaxThreads = cfg.getInt("httpd", "maxThreads", 25); int defaultDatabasePoolLimit = sshdThreads + httpdMaxThreads + 2; databasePoolLimit = cfg.getInt("database", "poolLimit", defaultDatabasePoolLimit);