From 28b55bba55cb0124d3ad00e5c48a9afe70cd52d3 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Wed, 20 Dec 2023 10:58:08 +0100 Subject: [PATCH] feat(cron): Warn on excessive memory consumption in background jobs Signed-off-by: Joas Schilling --- cron.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/cron.php b/cron.php index 7d661621ed0..41c5157befa 100644 --- a/cron.php +++ b/cron.php @@ -149,8 +149,22 @@ try { } $logger->debug('CLI cron call has selected job with ID ' . strval($job->getId()), ['app' => 'cron']); + + $memoryBefore = memory_get_usage(); + $memoryPeakBefore = memory_get_peak_usage(); + $job->execute($jobList, $logger); + $memoryAfter = memory_get_usage(); + $memoryPeakAfter = memory_get_peak_usage(); + + if ($memoryAfter - $memoryBefore > 10_000_000) { + $logger->warning('Used memory grew by more than 10 MB when executing job ' . get_class($job) . ' : ' . \OCP\Util::humanFileSize($memoryAfter). ' (before: ' . \OCP\Util::humanFileSize($memoryBefore) . ')', ['app' => 'cron']); + } + if ($memoryPeakAfter > 300_000_000) { + $logger->warning('Cron job used more than 300 MB of ram after executing job ' . get_class($job) . ': ' . \OCP\Util::humanFileSize($memoryPeakAfter) . ' (before: ' . \OCP\Util::humanFileSize($memoryPeakBefore) . ')', ['app' => 'cron']); + } + // clean up after unclean jobs \OC_Util::tearDownFS(); $tempManager->clean(); -- 2.39.5