1 files changed, 21 insertions, 0 deletions
diff --git a/synapse/server.py b/synapse/server.py
index 08ad97b952..75a902d64d 100644
--- a/synapse/server.py
+++ b/synapse/server.py
@@ -27,6 +27,7 @@ from typing_extensions import TypeAlias
from twisted.internet.interfaces import IOpenSSLContextFactory
from twisted.internet.tcp import Port
+from twisted.web.client import HTTPConnectionPool
from twisted.web.iweb import IPolicyForHTTPS
from twisted.web.resource import Resource
@@ -454,6 +455,26 @@ class HomeServer(metaclass=abc.ABCMeta):
)
@cache_in_self
+ def get_pusher_http_client(self) -> SimpleHttpClient:
+ # the pusher makes lots of concurrent SSL connections to Sygnal, and tends to
+ # do so in batches, so we need to allow the pool to keep lots of idle
+ # connections around.
+ pool = HTTPConnectionPool(self.get_reactor())
+ # XXX: The justification for using the cache factor here is that larger
+ # instances will need both more cache and more connections.
+ # Still, this should probably be a separate dial
+ pool.maxPersistentPerHost = max(int(100 * self.config.caches.global_factor), 5)
+ pool.cachedConnectionTimeout = 2 * 60
+
+ return SimpleHttpClient(
+ self,
+ ip_whitelist=self.config.server.ip_range_whitelist,
+ ip_blacklist=self.config.server.ip_range_blacklist,
+ use_proxy=True,
+ connection_pool=pool,
+ )
+
+ @cache_in_self
def get_federation_http_client(self) -> MatrixFederationHttpClient:
"""
An HTTP client for federation.
|