diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/Configuration.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/Configuration.java
index ad6a7cc..27d4b34 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/Configuration.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/Configuration.java
@@ -468,6 +468,8 @@
     public static final int DEFAULT_MAX_TRIES = 360;
     public static final Duration DEFAULT_RETRY_INTERVAL = Duration.ofSeconds(10);
     public static final int DEFAULT_THREAD_POOL_SIZE = 4;
+    public static final int DEFAULT_CONNECTIONS_PER_ROUTE = 100;
+    public static final int DEFAULT_MAX_CONNECTIONS = 200;
 
     static final String HTTP_SECTION = "http";
     static final String USER_KEY = "user";
@@ -477,6 +479,8 @@
     static final String MAX_TRIES_KEY = "maxTries";
     static final String RETRY_INTERVAL_KEY = "retryInterval";
     static final String THREAD_POOL_SIZE_KEY = "threadPoolSize";
+    static final String CONNECTIONS_PER_ROUTE_KEY = "connectionsPerRoute";
+    static final String MAX_CONNECTIONS_KEY = "maxConnections";
 
     private final String user;
     private final String password;
@@ -485,6 +489,8 @@
     private final int maxTries;
     private final Duration retryInterval;
     private final int threadPoolSize;
+    private final int connectionsPerRoute;
+    private final int maxConnections;
 
     private Http(Config cfg) {
       user = Strings.nullToEmpty(cfg.getString(HTTP_SECTION, null, USER_KEY));
@@ -494,6 +500,9 @@
       maxTries = getMaxTries(cfg, HTTP_SECTION, MAX_TRIES_KEY, DEFAULT_MAX_TRIES);
       retryInterval = getDuration(cfg, HTTP_SECTION, RETRY_INTERVAL_KEY, DEFAULT_RETRY_INTERVAL);
       threadPoolSize = getInt(cfg, HTTP_SECTION, THREAD_POOL_SIZE_KEY, DEFAULT_THREAD_POOL_SIZE);
+      connectionsPerRoute =
+          getInt(cfg, HTTP_SECTION, CONNECTIONS_PER_ROUTE_KEY, DEFAULT_CONNECTIONS_PER_ROUTE);
+      maxConnections = getInt(cfg, HTTP_SECTION, MAX_CONNECTIONS_KEY, DEFAULT_MAX_CONNECTIONS);
     }
 
     public String user() {
@@ -523,6 +532,14 @@
     public int threadPoolSize() {
       return threadPoolSize;
     }
+
+    public int connectionsPerRoute() {
+      return connectionsPerRoute;
+    }
+
+    public int maxConnections() {
+      return maxConnections;
+    }
   }
 
   /** Common parameters to cache, event, index and websession */
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/HttpClientProvider.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/HttpClientProvider.java
index b24d700..9b1d897 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/HttpClientProvider.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/HttpClientProvider.java
@@ -51,9 +51,6 @@
 /** Provides an HTTP client with SSL capabilities. */
 class HttpClientProvider implements Provider<CloseableHttpClient> {
   private static final FluentLogger log = FluentLogger.forEnclosingClass();
-  private static final int CONNECTIONS_PER_ROUTE = 100;
-  // Up to 2 target instances with the max number of connections per host:
-  private static final int MAX_CONNECTIONS = 2 * CONNECTIONS_PER_ROUTE;
 
   private static final int MAX_CONNECTION_INACTIVITY = 10000;
 
@@ -98,8 +95,8 @@
             .build();
     PoolingHttpClientConnectionManager connManager =
         new PoolingHttpClientConnectionManager(socketFactoryRegistry);
-    connManager.setDefaultMaxPerRoute(CONNECTIONS_PER_ROUTE);
-    connManager.setMaxTotal(MAX_CONNECTIONS);
+    connManager.setDefaultMaxPerRoute(cfg.http().connectionsPerRoute());
+    connManager.setMaxTotal(cfg.http().maxConnections());
     connManager.setValidateAfterInactivity(MAX_CONNECTION_INACTIVITY);
     return connManager;
   }
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index 36d8a09..1434c35 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -268,6 +268,14 @@
     Value is expressed in Gerrit time values as in [websession.cleanupInterval](#websessioncleanupInterval).
     When not specified, the default value is set to 10 seconds.
 
+```http.connectionsPerRoute```
+:   Maximum number of pooled HTTP connections to a peer instance.
+    When not specified, the default value is 100.
+
+```http.maxConnections```
+:   Total max pooled HTTP connections.
+    When not specified, the default value is 200.
+
 ```http.threadPoolSize```
 :   Maximum number of threads used to execute REST calls towards target instances.
 
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/HttpClientProviderConnectionReuseTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/HttpClientProviderConnectionReuseTest.java
index 5954629..0107b1b 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/HttpClientProviderConnectionReuseTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/HttpClientProviderConnectionReuseTest.java
@@ -37,6 +37,8 @@
 
   private static final String ENDPOINT = "/test";
   private static final Duration TIMEOUT = Duration.ofMillis(1000);
+  private static final int CONNECTIONS_PER_ROUTE = 10;
+  private static final int MAX_CONNECTIONS = 10;
 
   @Rule public WireMockRule wireMock = new WireMockRule(0);
   private Configuration cfg;
@@ -49,6 +51,8 @@
     when(cfg.http().password()).thenReturn("");
     when(cfg.http().connectionTimeout()).thenReturn(TIMEOUT);
     when(cfg.http().socketTimeout()).thenReturn(TIMEOUT);
+    when(cfg.http().connectionsPerRoute()).thenReturn(CONNECTIONS_PER_ROUTE);
+    when(cfg.http().maxConnections()).thenReturn(MAX_CONNECTIONS);
 
     provider = new TestableHttpClientProvider(cfg);
   }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/HttpClientProviderTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/HttpClientProviderTest.java
index 5391d42..06f079b 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/HttpClientProviderTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/HttpClientProviderTest.java
@@ -24,6 +24,7 @@
 import com.google.inject.Scopes;
 import java.time.Duration;
 import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -34,6 +35,8 @@
 @RunWith(MockitoJUnitRunner.class)
 public class HttpClientProviderTest {
   private static final Duration TIME_INTERVAL = Duration.ofMillis(1000);
+  private static final int CONNECTIONS_PER_ROUTE = 10;
+  private static final int MAX_CONNECTIONS = 10;
   private static final String EMPTY = "";
 
   @Mock(answer = Answers.RETURNS_DEEP_STUBS)
@@ -45,6 +48,8 @@
     when(configMock.http().password()).thenReturn(EMPTY);
     when(configMock.http().connectionTimeout()).thenReturn(TIME_INTERVAL);
     when(configMock.http().socketTimeout()).thenReturn(TIME_INTERVAL);
+    when(configMock.http().connectionsPerRoute()).thenReturn(CONNECTIONS_PER_ROUTE);
+    when(configMock.http().maxConnections()).thenReturn(MAX_CONNECTIONS);
   }
 
   @Test
@@ -58,6 +63,18 @@
     }
   }
 
+  @Test
+  public void testConnectionPoolSize() {
+    int customConnectionsPerRoute = 42;
+    when(configMock.http().connectionsPerRoute()).thenReturn(customConnectionsPerRoute);
+    int customMaxConnections = 100;
+    when(configMock.http().maxConnections()).thenReturn(customMaxConnections);
+    HttpClientProvider provider = new HttpClientProvider(configMock);
+    PoolingHttpClientConnectionManager connManager = provider.buildConnectionManager();
+    assertThat(connManager.getDefaultMaxPerRoute()).isEqualTo(customConnectionsPerRoute);
+    assertThat(connManager.getMaxTotal()).isEqualTo(customMaxConnections);
+  }
+
   class TestModule extends AbstractModule {
     @Override
     protected void configure() {
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/HttpSessionTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/HttpSessionTest.java
index b31d17f..47f5908 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/HttpSessionTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/HttpSessionTest.java
@@ -41,6 +41,8 @@
   private static final int MAX_TRIES = 3;
   private static final Duration RETRY_INTERVAL = Duration.ofMillis(250);
   private static final Duration TIMEOUT = Duration.ofMillis(500);
+  private static final int CONNECTIONS_PER_ROUTE = 10;
+  private static final int MAX_CONNECTIONS = 10;
   private static final int ERROR = 500;
   private static final int NO_CONTENT = 204;
   private static final int NOT_FOUND = 404;
@@ -71,6 +73,8 @@
     when(configMock.http().connectionTimeout()).thenReturn(TIMEOUT);
     when(configMock.http().socketTimeout()).thenReturn(TIMEOUT);
     when(configMock.http().retryInterval()).thenReturn(RETRY_INTERVAL);
+    when(configMock.http().connectionsPerRoute()).thenReturn(CONNECTIONS_PER_ROUTE);
+    when(configMock.http().maxConnections()).thenReturn(MAX_CONNECTIONS);
 
     httpSession = new HttpSession(new HttpClientProvider(configMock).get());
   }
