Browse Source

Merge pull request #6596 from annando/worker-jpm

Separate config options to display the worker jobs per minute
pull/6598/head
Tobias Diekershoff 3 years ago
committed by GitHub
parent
commit
e484678187
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      config/defaults.config.php
  2. 24
      src/Core/Worker.php

4
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.

24
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();

Loading…
Cancel
Save