|
|
|
|
@ -915,19 +915,23 @@ class OC { |
|
|
|
|
$eventLogger->end('request'); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
register_shutdown_function(function () { |
|
|
|
|
register_shutdown_function(function () use ($config) { |
|
|
|
|
$memoryPeak = memory_get_peak_usage(); |
|
|
|
|
$debugModeEnabled = $config->getSystemValueBool('debug', false); |
|
|
|
|
$memoryLimit = null; |
|
|
|
|
|
|
|
|
|
// Use the memory helper to get the real memory limit in bytes |
|
|
|
|
try { |
|
|
|
|
$memoryInfo = new \OC\MemoryInfo(); |
|
|
|
|
$memoryLimit = $memoryInfo->getMemoryLimit(); |
|
|
|
|
} catch (Throwable $e) { |
|
|
|
|
$memoryLimit = null; |
|
|
|
|
if (!$debugModeEnabled) { |
|
|
|
|
// Use the memory helper to get the real memory limit in bytes if debug mode is disabled |
|
|
|
|
try { |
|
|
|
|
$memoryInfo = new \OC\MemoryInfo(); |
|
|
|
|
$memoryLimit = $memoryInfo->getMemoryLimit(); |
|
|
|
|
} catch (Throwable $e) { |
|
|
|
|
// Ignore any errors and fall back to hardcoded thresholds |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Check if a memory limit is configured and can be retrieved and determine log level |
|
|
|
|
if ($memoryLimit !== null && $memoryLimit !== -1) { |
|
|
|
|
// Check if a memory limit is configured and can be retrieved and determine log level if debug mode is disabled |
|
|
|
|
if (!$debugModeEnabled && $memoryLimit !== null && $memoryLimit !== -1) { |
|
|
|
|
$logLevel = match (true) { |
|
|
|
|
$memoryPeak > $memoryLimit * 0.9 => ILogger::FATAL, |
|
|
|
|
$memoryPeak > $memoryLimit * 0.75 => ILogger::ERROR, |
|
|
|
|
@ -938,7 +942,7 @@ class OC { |
|
|
|
|
$memoryLimitIni = @ini_get('memory_limit'); |
|
|
|
|
$message = 'Request used ' . Util::humanFileSize($memoryPeak) . ' of memory. Memory limit: ' . ($memoryLimitIni ?: 'unknown'); |
|
|
|
|
} else { |
|
|
|
|
// Fall back to hardcoded thresholds if memory_limit cannot be determined |
|
|
|
|
// Fall back to hardcoded thresholds if memory_limit cannot be determined or if debug mode is enabled |
|
|
|
|
$logLevel = match (true) { |
|
|
|
|
$memoryPeak > 500_000_000 => ILogger::FATAL, |
|
|
|
|
$memoryPeak > 400_000_000 => ILogger::ERROR, |
|
|
|
|
|