From 440d846974446660274f8fa21fca2242dfad9fe8 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Wed, 23 Oct 2019 12:44:59 +0200 Subject: Let number of Rpc threads depend on number of available processors --- .../java/com/yahoo/vespa/config/server/rpc/RpcServer.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'configserver') diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java index e2c1139e4a8..29acb44045d 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java @@ -80,7 +80,7 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener { static final int TRACELEVEL_DEBUG = 9; private static final String THREADPOOL_NAME = "rpcserver worker pool"; private static final long SHUTDOWN_TIMEOUT = 60; - private static final int JRT_RPC_TRANSPORT_THREADS = 4; + private static final int JRT_RPC_TRANSPORT_THREADS = threadsToUse(); private final Supervisor supervisor = new Supervisor(new Transport(JRT_RPC_TRANSPORT_THREADS)); private Spec spec; @@ -131,10 +131,8 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener { this.metrics = metrics.getOrCreateMetricUpdater(Collections.emptyMap()); this.hostLivenessTracker = hostLivenessTracker; BlockingQueue workQueue = new LinkedBlockingQueue<>(config.maxgetconfigclients()); - int numberOfRpcThreads = (config.numRpcThreads() == 0) - ? Math.max(8, Runtime.getRuntime().availableProcessors()) - : config.numRpcThreads(); - executorService = new ThreadPoolExecutor(numberOfRpcThreads, numberOfRpcThreads, + int rpcWorkerThreads = (config.numRpcThreads() == 0) ? threadsToUse() : config.numRpcThreads(); + executorService = new ThreadPoolExecutor(rpcWorkerThreads, rpcWorkerThreads, 0, TimeUnit.SECONDS, workQueue, ThreadFactoryFactory.getThreadFactory(THREADPOOL_NAME)); delayedConfigResponses = new DelayedConfigResponses(this, config.numDelayedResponseThreads()); spec = new Spec(null, config.rpcport()); @@ -149,6 +147,10 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener { setUpHandlers(); } + private static int threadsToUse() { + return Math.max(8, Runtime.getRuntime().availableProcessors()); + } + /** * Handles RPC method "config.v3.getConfig" requests. * Uses the template pattern to call methods in classes that extend RpcServer. -- cgit v1.2.3