Lors de l'installation de php, ceux qui font attention peuvent constater que nous avons également installé le module php-fpm. Le module fpm est responsable du traitement du processus de requête. Les opérations associées de fpm affecteront directement le nombre de requêtes auxquelles le serveur peut répondre. Des paramètres appropriés amélioreront efficacement l'efficacité du traitement, sinon un délai d'expiration de la passerelle 502 ou une erreur 504 se produira.
Ouvrons le fichier www.conf sous /etc/php/7.2/fpm/pool.d et trouvons les paramètres suivants :
pm=dynamicpm.max_children=17h.start_servers=14h.min_spare_servers=13h.max_spare_servers=3;pm.max_requests=500
Ce sont les paramètres par défaut après que l'auteur a installé PHP, je vais les expliquer un par un ci-dessous :
La première dynamique indique que le mode de traitement du processus est dynamique, et il existe également un mode statique qui lui correspond.
Si pm est défini sur staic, alors seul le paramètre pm.max_childern prend effet.
Si pm est défini sur dynamique, les quatre paramètres suivants prendront effet. Le système démarrera les processus php-fpm pm.start_servers lorsque php-fpm commencera à s'exécuter, puis ajustera dynamiquement le nombre de processus php-fpm entre pm.min_spare_servers et pm.max_spare_servers en fonction des besoins du système.
Le deuxième paramètre pm.max_children indique le nombre maximum de processus pouvant être démarrés (démarrés). Évidemment, plus le nombre est élevé, plus il sera possible d'effectuer de requêtes en même temps. Naturellement, il n'y aura pas de connexions lentes ou. les temps d'attente des requêtes sont longs, mais le processeur ou la mémoire seront toujours disponibles. L'occupation n'est pas élevée. Cette valeur fait référence au nombre de processus php-fpm ouverts en mode statique et limite le nombre maximum de processus php-fpm en mode dynamique.
Le troisième paramètre pm.start_servers indique que s'il s'agit d'un mode dynamique, plusieurs processus seront démarrés dans l'état initial, puis ajustés dynamiquement selon les besoins, et est déterminé par les deux paramètres pm.min_spare_servers et pm.max_spare_servers.
Le quatrième paramètre pm.min_spare_servers représente le nombre minimum de processus php-fpm en état inactif en mode dynamique, et le nombre conservé après nettoyage des processus inactifs
Le cinquième paramètre pm.max_spare_servers représente le nombre maximum de processus php-fpm à l'état inactif en mode dynamique, c'est-à-dire que lorsque les processus inactifs atteignent cette valeur, ils sont nettoyés.
Le sixième paramètre pm.max_requests indique le nombre de requêtes avant de détruire le processus et de le redémarrer, ce qui peut éviter les fuites mémoire.
Évidemment, max_children ici est de 5, ce qui est suffisant au début. À mesure que le trafic augmente, ce ne sera certainement pas suffisant. Parlons des paramètres de valeur spécifiques. L'impact le plus direct est la valeur pm.max_children. : Si les ressources système de mémoire et de processeur le permettent, plus c'est gros, mieux c'est. Voici une méthode de calcul. Par exemple, un processus fpm est d'environ 15 à 25 Mo. Ensuite, lorsque le serveur dispose de 4 Go de mémoire, uniquement dans des conditions idéales, cela peut être d'environ 15 à 25 Mo. 150 ~ 300 lorsqu'il est entièrement utilisé, puis observez l'état du serveur et effectuez des ajustements.
De manière générale, les grands serveurs de mémoire (tels que 32 et 64 Go et plus) peuvent envisager le mode statique, qui a de bons effets de concurrence. Les petits serveurs de mémoire peuvent envisager le mode dynamique, qui peut être automatiquement contrôlé à la demande.
Vous pouvez effectuer des tests de résistance en fonction de votre propre situation et effectuer des ajustements en fonction des conditions de votre propre serveur.