Skip to content

Commit 8df0a6b

Browse files
authored
Accept limited number of new cluster link connections per cycle (#2009)
For large cluster accepting too many new cluster link connections in one cycle can cause increase in temporary memory usage as well as causes longer to accept all the connections. With this change, we utilize the same configuration introduced for clients with cluster link connections i.e. `10` for non TLS cluster and `1` for TLS cluster. ### Unstable ``` # Memory used_memory:13495144 used_memory_human:12.87M used_memory_rss:309686272 used_memory_rss_human:295.34M used_memory_peak:110714488 used_memory_peak_human:105.59M ``` ### With 1 accept per call for TLS cluster ``` # Memory used_memory:13495472 used_memory_human:12.87M used_memory_rss:256172032 used_memory_rss_human:244.30M used_memory_peak:59974584 used_memory_peak_human:57.20M ``` Summary: Peak memory is 46% lower for the best case observed during test experiments. ### Unstable ``` time ./valkey-cli --tls --cacert ca.crt --cert valkey-server.crt --key valkey-server.key --json info memory # Memory used_memory:45572952 used_memory_human:43.46M ... real 0m9.466s user 0m0.014s sys 0m0.002s ``` ### With 1 accept per call for TLS cluster ``` time ./valkey-cli --tls --cacert ca.crt --cert valkey-server.crt --key valkey-server.key --json info memory # Memory used_memory:10964872 used_memory_human:10.46M ... real 0m4.005s user 0m0.011s sys 0m0.005s ``` Summary: Time to serve user traffic is 57% lower for the best case observed during test experiments. Signed-off-by: Harkrishn Patro <harkrisp@amazon.com>
1 parent 70f2057 commit 8df0a6b

File tree

1 file changed

+1
-2
lines changed

1 file changed

+1
-2
lines changed

src/cluster_legacy.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1545,10 +1545,9 @@ static void clusterConnAcceptHandler(connection *conn) {
15451545
connSetReadHandler(conn, clusterReadHandler);
15461546
}
15471547

1548-
#define MAX_CLUSTER_ACCEPTS_PER_CALL 1000
15491548
void clusterAcceptHandler(aeEventLoop *el, int fd, void *privdata, int mask) {
15501549
int cport, cfd;
1551-
int max = MAX_CLUSTER_ACCEPTS_PER_CALL;
1550+
int max = server.tls_cluster ? server.max_new_tls_conns_per_cycle : server.max_new_conns_per_cycle;
15521551
char cip[NET_IP_STR_LEN];
15531552
int require_auth = TLS_CLIENT_AUTH_YES;
15541553
UNUSED(el);

0 commit comments

Comments
 (0)