Merge pull request #6596 from annando/worker-jpm

Separate config options to display the worker jobs per minute
This commit is contained in:
Tobias Diekershoff 2019-02-06 09:04:24 +01:00 committed by GitHub
commit e484678187
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 10 deletions

View File

@ -393,6 +393,10 @@ return [
// Number of worker tasks that are fetched in a single query. // Number of worker tasks that are fetched in a single query.
'worker_fetch_limit' => 1, 'worker_fetch_limit' => 1,
// worker_jpm (Boolean)
// If enabled, it prints out the jobs per minute.
'worker_jpm' => false,
// worker_load_exponent (Integer) // worker_load_exponent (Integer)
// Default 3, which allows only 25% of the maximum worker queues when server load reaches around 37% of maximum load. // 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. // For a linear response where 25% of worker queues are allowed at 75% of maximum load, set this to 1.

View File

@ -657,6 +657,19 @@ class Worker
$processlist = ''; $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')) { if (Config::get('system', 'worker_debug')) {
// Create a list of queue entries grouped by their priority // Create a list of queue entries grouped by their priority
$listitem = []; $listitem = [];
@ -686,16 +699,7 @@ class Worker
} }
DBA::close($entries); DBA::close($entries);
$intervals = [1, 10, 60]; $processlist .= ' ('.implode(', ', $listitem).')';
$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).')';
} }
$entries = self::totalEntries(); $entries = self::totalEntries();