PHP-procesbeheermodus
PHP-FPM, of FastCGI Process Manager voor PHP, biedt verschillende beheermodi voor zijn werkprocessen. Deze modi bepalen hoe PHP-FPM de onderliggende processen die PHP-verzoeken afhandelen, zal creëren, onderhouden en recyclen. De modus wordt ingesteld met behulp van de pm configuratierichtlijn.

dynamic (standaard)
In de dynamic modus past PHP-FPM het aantal voortgebrachte onderliggende processen dynamisch aan op basis van de vraag, en wordt gecontroleerd door de volgende richtlijnen:

pm.max_children het maximale aantal kinderen dat tegelijkertijd in leven kan zijn
pm.start_servers het aantal kinderen dat bij het opstarten is gemaakt
pm.min_spare_servers het minimumaantal kinderen in de 'inactieve' status (wachtend op verwerking). Als het aantal 'inactieve' processen kleiner is dan dit aantal, zullen er enkele kinderen worden aangemaakt
pm.max_spare_servers het maximale aantal kinderen in de 'inactieve' status (wachtend op verwerking). Als het aantal 'inactieve' processen groter is dan dit aantal, zullen sommige kinderen worden gedood
pm.max_spawn_rate het maximale aantal snelheid waarmee onderliggende processen tegelijk kunnen worden voortgebracht

Voordelen zijn onder meer de automatische aanpassing van het aantal onderliggende processen op basis van de vraag, waardoor een optimaal gebruik van resources wordt gegarandeerd. Dit is vooral handig voor servers met wisselende belastingen.

static
In de static modus onderhoudt PHP-FPM een vast aantal onderliggende processen. Dit nummer wordt gespecificeerd door de pm.max_children richtlijn. Voordelen zijn onder meer consistent geheugengebruik dankzij een constant aantal onderliggende processen. Dit is ideaal voor servers met stabiele belastingen.

ondemand
In de ondemand modus worden er bij het opstarten geen kinderen aangemaakt. In plaats daarvan zal PHP-FPM alleen onderliggende processen voortbrengen wanneer dat nodig is, dat wil zeggen wanneer er een inkomend verzoek is dat moet worden verwerkt. Het maximale aantal kinderen dat tegelijkertijd in leven kan zijn, wordt bepaald door de pm.max_children richtlijn. Processen worden vervolgens beëindigd nadat ze een bepaalde tijd inactief zijn geweest door de pm.process_idle_timeout richtlijn. Voordelen zijn onder meer een lager geheugengebruik tijdens perioden met weinig of geen verkeer. Ideaal voor servers met intermitterende belasting of applicaties met onvoorspelbare verkeerspatronen.

De beste modus voor uw toepassing kan variëren, afhankelijk van de beschikbare bronnen, verkeerspatronen en specifieke toepassingskenmerken van de server. Het is essentieel om de instellingen te controleren en te verfijnen om optimale prestaties te bereiken.