PHP-FPM (PHP FastCGI Process Manager) est un composant important de PHP, qui est spécialement utilisé pour gérer les processus qui sont des scripts PHP. Contrairement au modèle traditionnel basé sur le thread, PHP-FPM utilise une méthode basée sur le processus pour traiter les demandes, et chaque demande a un processus PHP-FPM indépendant pour le traitement. Ce modèle peut mieux améliorer les performances et la stabilité de la concurrence.
PHP-FPM peut s'exécuter indépendamment des serveurs Web (tels que Nginx, Apache) et communiquer avec le serveur Web via le protocole FastCGI. Il peut ajuster automatiquement le nombre de processus en fonction du fichier de configuration, aidant le système à faire face à différentes conditions de charge.
Dans les fichiers de configuration PHP-FPM, Max_Children est une option très importante. Il est utilisé pour limiter le nombre maximum de processus PHP-FPM. Chaque processus PHP-FPM consomme une certaine quantité de mémoire et de ressources CPU, il est donc crucial de configurer correctement la valeur des max_children.
Si le paramètre Max_Children est trop petit, il peut provoquer une accumulation de demande et un temps de réponse pour augmenter; Si le réglage est trop grand, il peut provoquer une mémoire système insuffisante, ce qui peut affecter la stabilité du système et peut même entraîner des collisions.
Avant d'ajuster Max_Children, vous devez d'abord comprendre l'état des ressources matérielles du serveur, y compris la mémoire disponible et le nombre de cœurs CPU. Vous pouvez afficher l'utilisation des ressources via des outils de ligne de commande tels que TOP ou HTOP.
Supposons que la mémoire du serveur est de 8 Go et que le processeur est de 4 cœurs.
La quantité de mémoire consommée par chaque processus PHP-FPM dépend de la complexité et de la qualité du code de l'application PHP. En supposant que chaque processus consomme environ 200 Mo de mémoire, un serveur avec 8 Go de mémoire peut accueillir 40 processus PHP-FPM. Cependant, le système doit également conserver une certaine quantité de mémoire pour d'autres processus, donc 6 Go de mémoire peuvent être utilisés pour prendre en charge les processus PHP-FPM.
Étant donné que le nombre de cœurs de processeur est petit, les max_children peuvent être définis sur 4, c'est-à-dire le nombre de noyaux de processeur du serveur.
Pour modifier la valeur de Max_Children, vous devez modifier le fichier de configuration PHP-FPM. D'une manière générale, le fichier de configuration est situé dans /etc/php-fpm.conf ou /etc/php/7.4/fpm/php-fpm.conf Path.
Recherchez l'option max_children dans le fichier de configuration et modifiez sa valeur au besoin, par exemple:
pm.max_children = 4
Après modification, enregistrez le fichier de configuration et redémarrez le service PHP-FPM pour que les paramètres prennent effet.
L'ajustement de la configuration de max_children n'est qu'une partie de l'optimisation des performances, et une surveillance et un réglage continu sont nécessaires à l'avenir.
Vous pouvez utiliser des outils de ligne de commande tels que TOP et HTOP, ou la propre page PHP-FPM-Status de PHP-FPM pour surveiller l'état du processus. Ces outils peuvent aider à afficher le nombre actuel de processus PHP-FPM, d'utilisation de la mémoire, etc., afin de découvrir des problèmes potentiels et de faire des ajustements en temps opportun.
Si vous constatez que le nombre de processus PHP-FPM est insuffisant, ce qui entraîne un traitement de demande lent, vous pouvez augmenter de manière appropriée la valeur des max_children; Si la mémoire système est insuffisante, vous pouvez envisager de réduire cette valeur. Selon la situation de charge réelle, d'autres options de configuration peuvent également être ajustées, telles que PM.max_requests, pm.start_servers, etc., pour optimiser les performances globales.
Une attention particulière est nécessaire lors du réglage des max_children. Des valeurs trop grandes peuvent entraîner une charge excessive sur le système, et des valeurs trop petites peuvent entraîner un arriéré de demandes. Des tests détaillés et une évaluation sont recommandés avant les ajustements.
De plus, s'il existe d'autres processus non PHP sur le serveur, leur consommation de ressources doit être prise en compte pour éviter d'affecter les performances de PHP-FPM.
En ajustant raisonnablement la configuration de max_children de PHP-FPM, la stabilité et les performances du système peuvent être efficacement améliorées. Définissez cette valeur raisonnablement en fonction des ressources matérielles du serveur et du volume de demande attendu, et surveillez et réglez régulièrement pour s'assurer que le système est toujours en meilleure condition.