diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/indices/recovery/throttler/RecoveryThrottler.java b/modules/elasticsearch/src/main/java/org/elasticsearch/indices/recovery/throttler/RecoveryThrottler.java index 5ef1fe481fd..86cdd9c32ae 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/indices/recovery/throttler/RecoveryThrottler.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/indices/recovery/throttler/RecoveryThrottler.java @@ -47,8 +47,14 @@ public class RecoveryThrottler extends AbstractComponent { @Inject public RecoveryThrottler(Settings settings) { super(settings); - concurrentRecoveries = componentSettings.getAsInt("concurrent_recoveries", Runtime.getRuntime().availableProcessors()); - concurrentStreams = componentSettings.getAsInt("concurrent_streams", Runtime.getRuntime().availableProcessors()); + int defaultConcurrent = Runtime.getRuntime().availableProcessors() + 1; + // tap it at 10 (is it a good number?) + if (defaultConcurrent > 10) { + defaultConcurrent = 10; + } + + concurrentRecoveries = componentSettings.getAsInt("concurrent_recoveries", defaultConcurrent); + concurrentStreams = componentSettings.getAsInt("concurrent_streams", defaultConcurrent); throttleInterval = componentSettings.getAsTime("interval", TimeValue.timeValueMillis(100)); logger.debug("concurrent_recoveries [{}], concurrent_streams [{}] interval [{}]", concurrentRecoveries, concurrentStreams, throttleInterval);