diff --git a/config/defaults.config.php b/config/defaults.config.php index 42533f5ad2..18859ee103 100644 --- a/config/defaults.config.php +++ b/config/defaults.config.php @@ -393,6 +393,10 @@ return [ // Number of worker tasks that are fetched in a single query. 'worker_fetch_limit' => 1, + // worker_jpm (Boolean) + // If enabled, it prints out the jobs per minute. + 'worker_jpm' => false, + // worker_load_exponent (Integer) // Default 3, which allows only 25% of the maximum worker queues when server load reaches around 37% of maximum load. // For a linear response where 25% of worker queues are allowed at 75% of maximum load, set this to 1. diff --git a/src/Core/Worker.php b/src/Core/Worker.php index 00b22c7885..cd16272443 100644 --- a/src/Core/Worker.php +++ b/src/Core/Worker.php @@ -657,6 +657,19 @@ class Worker $processlist = ''; + if (Config::get('system', 'worker_jpm')) { + $intervals = [1, 10, 60]; + $jobs_per_minute = []; + foreach ($intervals as $interval) { + $jobs = DBA::p("SELECT COUNT(*) AS `jobs` FROM `workerqueue` WHERE `done` AND `executed` > UTC_TIMESTAMP() - INTERVAL ".intval($interval)." MINUTE"); + if ($job = DBA::fetch($jobs)) { + $jobs_per_minute[$interval] = number_format($job['jobs'] / $interval, 0); + } + DBA::close($jobs); + } + $processlist = ' - jpm: '.implode('/', $jobs_per_minute); + } + if (Config::get('system', 'worker_debug')) { // Create a list of queue entries grouped by their priority $listitem = []; @@ -686,16 +699,7 @@ class Worker } DBA::close($entries); - $intervals = [1, 10, 60]; - $jobs_per_minute = []; - foreach ($intervals as $interval) { - $jobs = DBA::p("SELECT COUNT(*) AS `jobs` FROM `workerqueue` WHERE `done` AND `executed` > UTC_TIMESTAMP() - INTERVAL ".intval($interval)." MINUTE"); - if ($job = DBA::fetch($jobs)) { - $jobs_per_minute[$interval] = number_format($job['jobs'] / $interval, 0); - } - DBA::close($jobs); - } - $processlist = ' - jpm: '.implode('/', $jobs_per_minute).' ('.implode(', ', $listitem).')'; + $processlist .= ' ('.implode(', ', $listitem).')'; } $entries = self::totalEntries();