From c13a0cbdbfcf884bfc8c8c4eb8b2282fd01cfe00 Mon Sep 17 00:00:00 2001 From: Khushboo Verma <43381712+vermakhushboo@users.noreply.github.com> Date: Tue, 12 Mar 2024 10:24:15 +0100 Subject: [PATCH] Add logs for pool start and end --- app/http.php | 43 ++++++++++++++++++++++++++++++++++++++++++- app/init.php | 1 - 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/app/http.php b/app/http.php index 5b32d8f134..950ec3f05d 100644 --- a/app/http.php +++ b/app/http.php @@ -2,6 +2,7 @@ require_once __DIR__ . '/../vendor/autoload.php'; +use Appwrite\Extend\Exception; use Appwrite\Utopia\Response; use Swoole\Process; use Swoole\Http\Server; @@ -26,6 +27,24 @@ use Utopia\Pools\Group; $http = new Server("0.0.0.0", App::getEnv('PORT', 80)); +App::setResource('startTime', function() { + return \microtime(true); +}); + +App::init() + ->inject('startTime') + ->inject('log') + ->inject('http') + ->action(function(float $startTime, Log $log, mixed $http) { + $stats = $http->stats(); + $workersIdle = $stats['idle_worker_num'] ?? -1; + $workersTotal = $stats['worker_num'] ?? -1; + + $log->addExtra('workersIdle', \strval($workersIdle)); + $log->addExtra('workersTotal', \strval($workersTotal)); + $log->addExtra('veryFirstInit', \strval(\microtime(true))); + }); + $payloadSize = 6 * (1024 * 1024); // 6MB $workerNumber = swoole_cpu_num() * intval(App::getEnv('_APP_WORKER_PER_CORE', 6)); @@ -222,9 +241,10 @@ $http->on('start', function (Server $http) use ($payloadSize, $register) { }); }); -$http->on('request', function (SwooleRequest $swooleRequest, SwooleResponse $swooleResponse) use ($register) { +$http->on('request', function (SwooleRequest $swooleRequest, SwooleResponse $swooleResponse) use ($register, $http) { App::setResource('swooleRequest', fn () => $swooleRequest); App::setResource('swooleResponse', fn () => $swooleResponse); + App::setResource('http', fn () => $http); $request = new Request($swooleRequest); $response = new Response($swooleResponse); @@ -243,9 +263,16 @@ $http->on('request', function (SwooleRequest $swooleRequest, SwooleResponse $swo $app = new App('UTC'); + $l = new Log(); + App::setResource('log', fn() => $l); + + $l->addExtra('GetPoolsStart', \strval(\microtime(true))); + $pools = $register->get('pools'); App::setResource('pools', fn () => $pools); + $l->addExtra('GetPoolsEnd', \strval(\microtime(true))); + try { Authorization::cleanRoles(); Authorization::setRole(Role::any()->toString()); @@ -327,4 +354,18 @@ $http->on('request', function (SwooleRequest $swooleRequest, SwooleResponse $swo } }); +App::shutdown() + ->inject('startTime') + ->inject('log') + ->action(function(float $startTime, Log $log) { + $endTime = \microtime(true); + + $log->addExtra('veryLastShutdown', \strval(\microtime(true))); + $log->addExtra('duration', \strval($endTime - $startTime)); + + if($endTime - $startTime < 10) { + throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Our amazing timeout.'); + } + }); + $http->start(); diff --git a/app/init.php b/app/init.php index 9696b08f6c..154d89ead9 100644 --- a/app/init.php +++ b/app/init.php @@ -866,7 +866,6 @@ foreach ($locales as $locale) { ]); // Runtime Execution -App::setResource('log', fn() => new Log()); App::setResource('logger', function ($register) { return $register->get('logger'); }, ['register']);