Skip to content

Commit f1af920

Browse files
szaimenbackportbot[bot]
authored andcommitted
fix: log memory usage for requests based on configured memory limit
Signed-off-by: Simon L. <szaimen@e.mail.de>
1 parent 7b3c071 commit f1af920

1 file changed

Lines changed: 33 additions & 7 deletions

File tree

lib/base.php

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -917,14 +917,40 @@ public static function init(): void {
917917

918918
register_shutdown_function(function () {
919919
$memoryPeak = memory_get_peak_usage();
920-
$logLevel = match (true) {
921-
$memoryPeak > 500_000_000 => ILogger::FATAL,
922-
$memoryPeak > 400_000_000 => ILogger::ERROR,
923-
$memoryPeak > 300_000_000 => ILogger::WARN,
924-
default => null,
925-
};
926-
if ($logLevel !== null) {
920+
921+
// Use the memory helper to get the real memory limit in bytes
922+
try {
923+
$memoryInfo = new \OC\MemoryInfo();
924+
$memoryLimit = $memoryInfo->getMemoryLimit();
925+
} catch (Throwable $e) {
926+
$memoryLimit = null;
927+
}
928+
929+
// Check if a memory limit is configured and can be retrieved and determine log level
930+
if ($memoryLimit !== null && $memoryLimit !== -1) {
931+
$logLevel = match (true) {
932+
$memoryPeak > $memoryLimit * 0.9 => ILogger::FATAL,
933+
$memoryPeak > $memoryLimit * 0.75 => ILogger::ERROR,
934+
$memoryPeak > $memoryLimit * 0.5 => ILogger::WARN,
935+
default => null,
936+
};
937+
938+
$memoryLimitIni = @ini_get('memory_limit');
939+
$message = 'Request used ' . Util::humanFileSize($memoryPeak) . ' of memory. Memory limit: ' . ($memoryLimitIni ?: 'unknown');
940+
} else {
941+
// Fall back to hardcoded thresholds if memory_limit cannot be determined
942+
$logLevel = match (true) {
943+
$memoryPeak > 500_000_000 => ILogger::FATAL,
944+
$memoryPeak > 400_000_000 => ILogger::ERROR,
945+
$memoryPeak > 300_000_000 => ILogger::WARN,
946+
default => null,
947+
};
948+
927949
$message = 'Request used more than 300 MB of RAM: ' . Util::humanFileSize($memoryPeak);
950+
}
951+
952+
// Log the message
953+
if ($logLevel !== null) {
928954
$logger = Server::get(LoggerInterface::class);
929955
$logger->log($logLevel, $message, ['app' => 'core']);
930956
}

0 commit comments

Comments
 (0)