aboutsummaryrefslogtreecommitdiffstats
path: root/configserver/src/main/java/com/yahoo/vespa/config/server/tenant
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-11-01 11:37:15 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2021-11-01 11:37:15 +0100
commit7afa23e3b9a09c035986d7d4cf6756aa230aab6b (patch)
tree9bf868f73e6835143cded201d8aba57290f6b0a2 /configserver/src/main/java/com/yahoo/vespa/config/server/tenant
parentda5368d7840421dea6b7fbc3957b6d1a77ca9bc0 (diff)
Require that you have at least 1G per thread as each of them can require quite a lot during expression parsing.
Diffstat (limited to 'configserver/src/main/java/com/yahoo/vespa/config/server/tenant')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java7
1 files changed, 5 insertions, 2 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java
index 1499100307c..0a50bac541e 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java
@@ -221,9 +221,12 @@ public class TenantRepository {
}
private ExecutorService createModelBuilderExecutor(int numThreads) {
+ final long GB = 1024*1024*1024;
if (numThreads == 0) return new InThreadExecutorService();
if (numThreads < 0) {
- numThreads = Runtime.getRuntime().availableProcessors();
+ long maxHeap = Runtime.getRuntime().maxMemory();
+ int maxThreadsToFitInMemory = (int)(maxHeap / 1*GB);
+ numThreads = Math.min(Runtime.getRuntime().availableProcessors(), maxThreadsToFitInMemory);
}
return Executors.newFixedThreadPool(numThreads, ThreadFactoryFactory.getDaemonThreadFactory("deploy-helper"));
}
@@ -348,7 +351,7 @@ public class TenantRepository {
PermanentApplicationPackage permanentApplicationPackage = new PermanentApplicationPackage(configserverConfig);
SessionPreparer sessionPreparer = new SessionPreparer(modelFactoryRegistry,
fileDistributionFactory,
- deployHelperExecutor,
+ deployHelperExecutor,
hostProvisionerProvider,
permanentApplicationPackage,
configserverConfig,