Only check for stale processes every 5 minutes

This commit is contained in:
Michael 2017-06-12 09:44:46 +00:00
parent 4fdaca861b
commit 8be52424f5
3 changed files with 16 additions and 8 deletions

View file

@ -22,6 +22,7 @@ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'a
use Friendica\App;
use Friendica\Core\Config;
use Friendica\Util\Lock;
require_once 'include/config.php';
require_once 'include/network.php';
@ -1100,8 +1101,16 @@ function proc_run($cmd) {
return;
}
// If there is a lock then we don't have to check for too much worker
if (!Lock::set('poller_worker', 0)) {
return;
}
// If there are already enough workers running, don't fork another one
if (poller_too_much_workers()) {
$quit = poller_too_much_workers();
Lock::remove('poller_worker');
if ($quit) {
return;
}

View file

@ -47,13 +47,12 @@ function poller_run($argv, $argc){
// We now start the process. This is done after the load check since this could increase the load.
$a->start_process();
// At first we check the number of workers and quit if there are too much of them
// This is done at the top to avoid that too much code is executed without a need to do so,
// since the poller mostly quits here.
if (poller_too_much_workers()) {
// Kill stale processes every 5 minutes
$last_cleanup = Config::get('system', 'poller_last_cleaned', 0);
if (time() > ($last_cleanup + 300)) {
logger('CLEAN: '.time().' > '.($last_cleanup + 300).' - '.$last_cleanup);
Config::set('system', 'poller_last_cleaned', time());
poller_kill_stale_workers();
logger('Pre check: Active worker limit reached, quitting.', LOGGER_DEBUG);
return;
}
// Do we have too few memory?

View file

@ -19,7 +19,7 @@ function pubsubpublish_run(&$argv, &$argc){
foreach ($r as $rr) {
logger("Publish feed to ".$rr["callback_url"], LOGGER_DEBUG);
proc_run(array('priority' => PRIORITY_HIGH, 'created' => $a->queue['created'], 'dont_fork' => true),
'include/pubsubpublish.php', $rr["id"]);
'include/pubsubpublish.php', (int)$rr["id"]);
}
}