aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulius Knorr <jus@bitgrid.net>2025-02-13 19:50:32 +0100
committerGitHub <noreply@github.com>2025-02-13 19:50:32 +0100
commit8c69bf1219c03faa05c1f74c2f600d8a3eca1e6e (patch)
treea090aa1030e09384b87ea22b196d8762f4bb5309
parentb638c2772329a74a3db642bbbc1bf312a475ae4c (diff)
parentd31bc88a23b675c40ee5a20b4f6fd59aa6637912 (diff)
downloadnextcloud-server-8c69bf1219c03faa05c1f74c2f600d8a3eca1e6e.tar.gz
nextcloud-server-8c69bf1219c03faa05c1f74c2f600d8a3eca1e6e.zip
Merge pull request #48738 from nextcloud/perf/log-high-memory-requests
perf: Log requests using high amount of memory as warning
-rw-r--r--lib/base.php16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/base.php b/lib/base.php
index 9323cb735ca..546a119479b 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -18,6 +18,7 @@ use OCP\Security\Bruteforce\IThrottler;
use OCP\Server;
use OCP\Share;
use OCP\User\Events\UserChangedEvent;
+use OCP\Util;
use Psr\Log\LoggerInterface;
use Symfony\Component\Routing\Exception\MethodNotAllowedException;
use function OCP\Log\logger;
@@ -828,6 +829,21 @@ class OC {
register_shutdown_function(function () use ($eventLogger) {
$eventLogger->end('request');
});
+
+ register_shutdown_function(function () {
+ $memoryPeak = memory_get_peak_usage();
+ $logLevel = match (true) {
+ $memoryPeak > 500_000_000 => ILogger::FATAL,
+ $memoryPeak > 400_000_000 => ILogger::ERROR,
+ $memoryPeak > 300_000_000 => ILogger::WARN,
+ default => null,
+ };
+ if ($logLevel !== null) {
+ $message = 'Request used more than 300 MB of RAM: ' . Util::humanFileSize($memoryPeak);
+ $logger = Server::get(LoggerInterface::class);
+ $logger->log($logLevel, $message, ['app' => 'core']);
+ }
+ });
}
/**