From a6ffab09df3d69ce2c5c73a2b1de22418a5fac45 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Mon, 7 Nov 2022 23:31:54 +1300 Subject: [PATCH] WIP fix too many connections --- app/realtime.php | 13 ++++++++----- docker-compose.yml | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/app/realtime.php b/app/realtime.php index be87c3d6e6..8ee4e64761 100644 --- a/app/realtime.php +++ b/app/realtime.php @@ -35,6 +35,9 @@ Runtime::enableCoroutine(SWOOLE_HOOK_ALL); $realtime = new Realtime(); +$dbPool = $register->get('dbPool'); +$redisPool = $register->get('redisPool'); + /** * Table for statistics across all workers. */ @@ -354,15 +357,15 @@ $server->onWorkerStart(function (int $workerId) use ($server, $register, $stats, Console::error('Failed to restart pub/sub...'); }); -$server->onOpen(function (int $connection, SwooleRequest $request) use ($server, $register, $stats, &$realtime, $logError) { +$server->onOpen(function (int $connection, SwooleRequest $request) use ($server, $dbPool, $redisPool, $stats, &$realtime, $logError) { $app = new App('UTC'); $request = new Request($request); $response = new Response(new SwooleResponse()); /** @var PDO $db */ - $db = $register->get('dbPool')->get(); + $db = $dbPool->get(); /** @var Redis $redis */ - $redis = $register->get('redisPool')->get(); + $redis = $redisPool->get(); Console::info("Connection open (user: {$connection})"); @@ -477,8 +480,8 @@ $server->onOpen(function (int $connection, SwooleRequest $request) use ($server, /** * Put used PDO and Redis Connections back into their pools. */ - $register->get('dbPool')->put($db); - $register->get('redisPool')->put($redis); + $dbPool->put($db); + $redisPool->put($redis); } }); diff --git a/docker-compose.yml b/docker-compose.yml index ea9241a9d3..b5b6a271c2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -707,7 +707,7 @@ services: - MYSQL_DATABASE=${_APP_DB_SCHEMA} - MYSQL_USER=${_APP_DB_USER} - MYSQL_PASSWORD=${_APP_DB_PASS} - command: 'mysqld --innodb-flush-method=fsync' # add ' --query_cache_size=0' for DB tests + command: 'mysqld --innodb-flush-method=fsync --max_connections=49152' # 128 (CPUs) * 6 (Workers) * 64 (Pool size) # command: mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile0.bu && mv /var/lib/mysql/ib_logfile1 /var/lib/mysql/ib_logfile1.bu # smtp: