mirror of
https://mau.dev/maunium/synapse.git
synced 2024-11-16 23:11:34 +01:00
Make the federation server ratelimiting configurable.
This commit is contained in:
parent
0554d07082
commit
9d9b230501
2 changed files with 41 additions and 5 deletions
|
@ -22,6 +22,12 @@ class RatelimitConfig(Config):
|
||||||
self.rc_messages_per_second = args.rc_messages_per_second
|
self.rc_messages_per_second = args.rc_messages_per_second
|
||||||
self.rc_message_burst_count = args.rc_message_burst_count
|
self.rc_message_burst_count = args.rc_message_burst_count
|
||||||
|
|
||||||
|
self.federation_rc_window_size = args.federation_rc_window_size
|
||||||
|
self.federation_rc_sleep_limit = args.federation_rc_sleep_limit
|
||||||
|
self.federation_rc_sleep_delay = args.federation_rc_sleep_delay
|
||||||
|
self.federation_rc_reject_limit = args.federation_rc_reject_limit
|
||||||
|
self.federation_rc_concurrent = args.federation_rc_concurrent
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def add_arguments(cls, parser):
|
def add_arguments(cls, parser):
|
||||||
super(RatelimitConfig, cls).add_arguments(parser)
|
super(RatelimitConfig, cls).add_arguments(parser)
|
||||||
|
@ -34,3 +40,33 @@ class RatelimitConfig(Config):
|
||||||
"--rc-message-burst-count", type=float, default=10,
|
"--rc-message-burst-count", type=float, default=10,
|
||||||
help="number of message a client can send before being throttled"
|
help="number of message a client can send before being throttled"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
rc_group.add_argument(
|
||||||
|
"--federation-rc-window-size", type=int, default=10000,
|
||||||
|
help="The federation window size in milliseconds",
|
||||||
|
)
|
||||||
|
|
||||||
|
rc_group.add_argument(
|
||||||
|
"--federation-rc-sleep-limit", type=int, default=10,
|
||||||
|
help="The number of federation requests from a single server"
|
||||||
|
" in a window before the server will delay processing the"
|
||||||
|
" request.",
|
||||||
|
)
|
||||||
|
|
||||||
|
rc_group.add_argument(
|
||||||
|
"--federation-rc-sleep-delay", type=int, default=500,
|
||||||
|
help="The duration in milliseconds to delay processing events from"
|
||||||
|
" remote servers by if they go over the sleep limit.",
|
||||||
|
)
|
||||||
|
|
||||||
|
rc_group.add_argument(
|
||||||
|
"--federation-rc-reject-limit", type=int, default=50,
|
||||||
|
help="The maximum number of concurrent federation requests allowed"
|
||||||
|
" from a single server",
|
||||||
|
)
|
||||||
|
|
||||||
|
rc_group.add_argument(
|
||||||
|
"--federation-rc-concurrent", type=int, default=3,
|
||||||
|
help="The number of federation requests to concurrently process"
|
||||||
|
" from a single server",
|
||||||
|
)
|
||||||
|
|
|
@ -66,9 +66,9 @@ class TransportLayer(TransportLayerServer, TransportLayerClient):
|
||||||
|
|
||||||
self.ratelimiter = FederationRateLimiter(
|
self.ratelimiter = FederationRateLimiter(
|
||||||
self.clock,
|
self.clock,
|
||||||
window_size=10000,
|
window_size=homeserver.config.federation_rc_window_size,
|
||||||
sleep_limit=10,
|
sleep_limit=homeserver.config.federation_rc_sleep_limit,
|
||||||
sleep_msec=500,
|
sleep_msec=homeserver.config.federation_rc_sleep_delay,
|
||||||
reject_limit=50,
|
reject_limit=homeserver.config.federation_rc_reject_limit,
|
||||||
concurrent_requests=3,
|
concurrent_requests=homeserver.config.federation_rc_concurrent,
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue