diff options
3 files changed, 6 insertions, 9 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/SearchHandler.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/SearchHandler.java index bdf9b96d6c5..d3001bd9100 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/SearchHandler.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/SearchHandler.java @@ -49,7 +49,7 @@ class SearchHandler extends ProcessingHandler<SearchChains> { // User options overrides below configuration if (hasUserOptions()) return; if (cluster.isHostedVespa()) { - builder.maxThreads(-2).minThreads(8).queueSize(-40); + builder.maxThreads(-2).minThreads(-2).queueSize(-40); } else { builder.maxThreads(500).minThreads(500).queueSize(0); } diff --git a/container-core/src/main/java/com/yahoo/container/handler/ThreadPoolProvider.java b/container-core/src/main/java/com/yahoo/container/handler/ThreadPoolProvider.java index 081cefbd7eb..a07898cb1d1 100644 --- a/container-core/src/main/java/com/yahoo/container/handler/ThreadPoolProvider.java +++ b/container-core/src/main/java/com/yahoo/container/handler/ThreadPoolProvider.java @@ -38,14 +38,10 @@ public class ThreadPoolProvider extends AbstractComponent implements Provider<Ex * as {@link ThreadpoolConfig} is currently public api. */ private static ContainerThreadpoolConfig translateConfig(ThreadpoolConfig config) { - int cpus = Runtime.getRuntime().availableProcessors(); - int max = config.maxthreads() >= 0 ? config.maxthreads() : Math.max(8, Math.abs(config.maxthreads()) * cpus); - int min = config.corePoolSize() >= 0 ? config.corePoolSize() : Math.max(8, Math.abs(config.corePoolSize()) * cpus); - return new ContainerThreadpoolConfig( new ContainerThreadpoolConfig.Builder() - .maxThreads(max) - .minThreads(min) + .maxThreads(config.maxthreads()) + .minThreads(config.corePoolSize()) .name(config.name()) .queueSize(config.queueSize()) .keepAliveTime(config.keepAliveTime()) diff --git a/container-core/src/main/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadpool.java b/container-core/src/main/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadpool.java index b55cd9bf3b5..7f4d1462102 100644 --- a/container-core/src/main/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadpool.java +++ b/container-core/src/main/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadpool.java @@ -26,6 +26,7 @@ public class DefaultContainerThreadpool extends AbstractComponent implements Aut private static final Logger log = Logger.getLogger(DefaultContainerThreadpool.class.getName()); private static final int MIN_QUEUE_SIZE = 650; + private static final int MIN_THREADS_WHEN_SCALE_FACTOR = 8; private final ExecutorServiceWrapper threadpool; @@ -94,14 +95,14 @@ public class DefaultContainerThreadpool extends AbstractComponent implements Aut private static int maxThreads(ContainerThreadpoolConfig config, int cpus) { if (config.maxThreads() > 0) return config.maxThreads(); else if (config.maxThreads() == 0) return 4 * cpus; - else return Math.abs(config.maxThreads()) * cpus; + else return Math.max(MIN_THREADS_WHEN_SCALE_FACTOR, Math.abs(config.maxThreads()) * cpus); } private static int minThreads(ContainerThreadpoolConfig config, int max, int cpus) { int threads; if (config.minThreads() > 0) threads = config.minThreads(); else if (config.minThreads() == 0) threads = 4 * cpus; - else threads = Math.abs(config.minThreads()) * cpus; + else threads = Math.max(MIN_THREADS_WHEN_SCALE_FACTOR, Math.abs(config.minThreads()) * cpus); return Math.min(threads, max); } |