Dans mon application Web PHP, j'essaie de limiter le nombre de processus gourmands en ressources processeur/mémoire qui s'exécutent (par exemple, la commande 'convert' d'ImageMagick). J'ai un certain nombre de travaux crons qui exécutent divers scripts qui pourraient potentiellement exécuter trop d'instances de ces processus intensifs CPU/mémoire.Comment limiter le nombre de processus?
Dans ma tentative de limiter de tels processus, je vérifie d'abord si mon système exécute déjà un certain nombre de processus. La fonction:
function has_reached_process_limit($process, $limit)
{
$command = 'ps -eo comm | grep ' . $process;
exec($command, $output, $return);
if (count($output) > $limit)
{
return TRUE;
}
else
{
return FALSE;
}
}
Alors, je lance quelque chose comme ceci:
while (has_reached_process_limit('convert', 5) === TRUE)
{
// loop over
}
Le problème est que lorsque je surveille mon « ressources (via le « OS commande top »), je vois beaucoup plus processus que ce que je m'attends à être en cours d'exécution. Des idées pourquoi?
Quels sont ces LOT plus de processus que vous parlez? Exemple ? – codaddict
Je pense que c'est parce que 'ps' montre aussi des threads et des fourchettes. Donc, si l'un des processus imagemagick utilise 3 threads, il apparaîtra 3 fois. C'est peut-être le problème, mais je ne suis pas sûr de savoir comment vous y remédieriez. Pour être honnête cependant, allez avec la réponse ci-dessous et avoir une file d'attente de travail. – ryeguy