From c64b6127ea555ac1cc96e1ddb0e7d28f1abbaeb2 Mon Sep 17 00:00:00 2001 From: John Sully Date: Tue, 11 Jun 2019 01:34:36 -0400 Subject: [PATCH] Enable load balancing of UNIX sockets across threads Former-commit-id: 46d6caa47c57fa13055615dfc2376b0962468b81 --- src/networking.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/networking.cpp b/src/networking.cpp index 923535bd2..c5a921247 100644 --- a/src/networking.cpp +++ b/src/networking.cpp @@ -1175,7 +1175,17 @@ void acceptUnixHandler(aeEventLoop *el, int fd, void *privdata, int mask) { serverLog(LL_VERBOSE,"Accepted connection to %s", g_pserver->unixsocket); aeAcquireLock(); - acceptCommonHandler(cfd,CLIENT_UNIX_SOCKET,NULL, ielCur); + int ielTarget = rand() % cserver.cthreads; + if (ielTarget == ielCur) + { + acceptCommonHandler(cfd,CLIENT_UNIX_SOCKET,NULL, ielCur); + } + else + { + aePostFunction(g_pserver->rgthreadvar[ielTarget].el, [cfd, ielTarget]{ + acceptCommonHandler(cfd,CLIENT_UNIX_SOCKET,NULL, ielTarget); + }); + } aeReleaseLock(); }