Cet article présente principalement les aspects statiques et dynamiques de php-fpm. Maintenant, je le partage avec vous et le donne comme référence. Jetons un coup d'oeil ensemble
Comparaison des méthodes d'exécution entre statique et dynamique de php-fpm
Lors de la configuration de php-fpm il y a quelque temps, j'ai découvert par hasard Il s'avère qu'il dispose de deux autres modes d'exécution. Comme Apache, son nombre de processus peut également être divisé en dynamiques et statiques selon les paramètres.
Il existe également deux manières pour php-fpm. L'une consiste à ouvrir directement un nombre spécifié de processus php-fpm sans augmenter ni diminuer ; l'autre consiste à ouvrir un certain nombre de processus php-fpm au début ; le volume des requêtes devient important, le nombre de processus php-fpm est augmenté dynamiquement jusqu'à la limite supérieure et lorsqu'ils sont inactifs, le nombre de processus inactifs est automatiquement libéré jusqu'à une limite inférieure.
Ces deux méthodes d'exécution différentes peuvent être ajustées en fonction des besoins réels du serveur.
Parlons de quelques paramètres impliqués ici. Ce sont pm, pm.max_children, pm.start_servers, pm.min_spare_servers et pm.max_spare_servers.
PM indique quelle méthode utiliser. Vous avez le choix entre deux valeurs, statique ou dynamique. Dans les anciennes versions, la dynamique était appelée Apache-like. Veuillez prêter attention aux instructions données dans le fichier de configuration.
Les quatre paramètres suivants signifient :
pm.max_children : le nombre de processus php-fpm ouverts en mode statique.
pm.start_servers : Le nombre de processus php-fpm démarrant en mode dynamique.
pm.min_spare_servers : Le nombre minimum de processus php-fpm en mode dynamique.
pm.max_spare_servers : Le nombre maximum de processus php-fpm en mode dynamique.
Si dm est défini sur static, alors seul le paramètre pm.max_children prendra effet. Le système ouvrira le nombre défini de processus php-fpm.
Si dm est défini sur dynamique, alors le paramètre pm.max_children n'est pas valide et les trois paramètres suivants prennent 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.
Alors, quelle méthode d'exécution est la meilleure pour notre serveur ? En fait, comme Apache, le programme PHP que nous exécutons aura plus ou moins des fuites de mémoire après son exécution. C'est également la raison pour laquelle un processus php-fpm n'occupe qu'environ 3 Mo de mémoire au début, et il passera à 20-30 Mo après une exécution pendant un certain temps. Par conséquent, la méthode dynamique mettra fin aux processus redondants et pourra recycler et libérer de la mémoire. Il est donc recommandé de l'utiliser sur des serveurs ou des VPS avec moins de mémoire. Le montant maximum spécifique est obtenu sur la base de la mémoire/20 M. Par exemple, pour un VPS de 512 Mo, il est recommandé de définir pm.max_spare_servers sur 20. Quant à pm.min_spare_servers, il est recommandé de le paramétrer en fonction de la charge du serveur. Une valeur plus adaptée est comprise entre 5 et 10.
Pour les serveurs dotés d'une mémoire relativement volumineuse, le définir sur statique améliorera l'efficacité. Parce que les changements fréquents du processus php-fpm entraîneront un décalage, donc si la mémoire est suffisamment grande, l'effet statique sera meilleur. La quantité peut également être obtenue selon la mémoire/30M. Par exemple, un serveur avec 2 Go de mémoire peut être défini sur 50 ; un serveur avec 4 Go de mémoire peut être défini sur 100, etc.
Ce site est construit sur un VPS de 512M, donc les paramètres que j'ai définis sont les suivants :
pm=dynamic
pm.max_children=20
pm.start_servers=5
pm.min_spare_servers= 5
pm.max_spare_servers=20
Cela peut économiser un maximum de mémoire et améliorer l'efficacité de l'exécution.
Vous trouverez ci-joint les descriptions de chaque paramètre :
pm string
Définissez la manière dont le gestionnaire de processus gère les processus enfants. Valeurs disponibles : statique, à la demande, dynamique. Doit être défini.
statique - le nombre de processus enfants est fixe (pm.max_children).
ondemand - le processus est généré lorsqu'il y a une demande (sur demande, contrairement à dynamique, pm.start_servers est démarré au démarrage du service.
dynamique - le nombre de processus enfants est défini dynamiquement en fonction de la configuration suivante : pm .max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
pm.max_children int
Lorsque pm est défini sur statique, il indique le nombre de processus enfants créés. Lorsque pm est défini sur dynamique, il indique le nombre de processus enfants créés. indique le nombre maximum de processus enfants pouvant être créés. Le nombre. Doit être défini
Cette option définit la limite du nombre de requêtes pouvant être servies en même temps. Semblable au paramètre MaxClients dans mpm_prefork d'Apache. et la variable d'environnement PHP_FCGI_CHILDREN dans PHP FastCGI ordinaire
Paramètre de démarrage Le nombre de processus enfants créés uniquement lorsque pm est défini sur dynamique : min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm. min_spare_servers int
Définit le nombre minimum de processus de service inactifs uniquement. Utilisé lorsqu'il est défini sur dynamique
pm.max_spare_servers int
Définit le nombre maximum de processus de service inactifs
pm.max_requests int
. Set. Nombre de requêtes servies avant la renaissance de chaque processus enfant. Utile pour les modules tiers qui peuvent avoir des fuites de mémoire. Si défini sur '0', il est équivalent à la variable d'environnement PHP_FCGI_MAX_REQUESTS. Par défaut : 0. >
Comparaison. des méthodes d'exécution de
et dynamique dynamique de php-fpm Lors de la configuration de php-fpm il y a quelque temps, j'ai accidentellement découvert qu'il avait deux méthodes d'exécution Méthode comme Apache. , son nombre de processus peut également être divisé en dynamique et statique selon les paramètres. Il existe également deux méthodes pour php-fpm L'une consiste à ouvrir directement un nombre spécifié de processus php-fpm, l'autre. est de démarrer un certain nombre de processus php-fpm au début. Lorsque le volume de requêtes devient important, augmentez dynamiquement le nombre de processus php-fpm jusqu'à la limite supérieure et libérez automatiquement les processus inactifs lorsqu'ils sont inactifs jusqu'à une limite inférieure. .
Ces deux méthodes d'exécution différentes peuvent être ajustées en fonction des besoins réels du serveur.
Parlons de quelques paramètres impliqués ici. Ce sont pm, pm.max_children, pm.start_servers, pm.min_spare_servers et pm.max_spare_servers.
PM indique quelle méthode utiliser. Vous avez le choix entre deux valeurs, statique ou dynamique. Dans les anciennes versions, la dynamique était appelée Apache-like. Veuillez prêter attention aux instructions données dans le fichier de configuration.
Les quatre paramètres suivants signifient :
Si dm est défini sur static, alors seul le paramètre pm.max_children prendra effet. Le système ouvrira le nombre défini de processus php-fpm.
Si dm est défini sur dynamique, alors le paramètre pm.max_children n'est pas valide et les trois paramètres suivants prennent 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.
Alors, quelle méthode d'exécution est la meilleure pour notre serveur ? En fait, comme Apache, le programme PHP que nous exécutons aura plus ou moins des fuites de mémoire après son exécution. C'est également la raison pour laquelle un processus php-fpm n'occupe qu'environ 3 Mo de mémoire au début, et il passera à 20-30 Mo après une exécution pendant un certain temps. Par conséquent, la méthode dynamique mettra fin aux processus redondants et pourra recycler et libérer de la mémoire. Il est donc recommandé de l'utiliser sur des serveurs ou des VPS avec moins de mémoire. Le montant maximum spécifique est obtenu sur la base de la mémoire/20 M. Par exemple, pour un VPS de 512 Mo, il est recommandé de définir pm.max_spare_servers sur 20. Quant à pm.min_spare_servers, il est recommandé de le paramétrer en fonction de la charge du serveur. Une valeur plus adaptée est comprise entre 5 et 10.
Pour les serveurs dotés d'une mémoire relativement volumineuse, le définir sur statique améliorera l'efficacité. Parce que les changements fréquents du processus php-fpm entraîneront un décalage, donc si la mémoire est suffisamment grande, l'effet statique sera meilleur. La quantité peut également être obtenue selon la mémoire/30M. Par exemple, un serveur avec 2 Go de mémoire peut être défini sur 50 ; un serveur avec 4 Go de mémoire peut être défini sur 100, etc.
Ce site est construit sur un VPS de 512M, donc les paramètres que j'ai définis sont les suivants :
pm=dynamic
pm.max_children=20
pm.start_servers=5
pm.min_spare_servers= 5
pm.max_spare_servers=20
Cela peut économiser un maximum de mémoire et améliorer l'efficacité de l'exécution.
Vous trouverez ci-joint les descriptions de chaque paramètre :
pm string
Définissez la manière dont le gestionnaire de processus gère les processus enfants. Valeurs disponibles : statique, à la demande, dynamique. Doit être défini.
statique - le nombre de processus enfants est fixe (pm.max_children).
ondemand - le processus est généré lorsqu'il y a une demande (sur demande, contrairement à dynamique, pm.start_servers est démarré au démarrage du service.
dynamique - le nombre de processus enfants est défini dynamiquement en fonction de la configuration suivante : pm .max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
pm.max_children int
Lorsque pm est défini sur statique, il indique le nombre de processus enfants créés. Lorsque pm est défini sur dynamique, il indique le nombre de processus enfants créés. indique le nombre maximum de processus enfants pouvant être créés. Le nombre. Doit être défini
Cette option définit la limite du nombre de requêtes pouvant être servies en même temps. Semblable au paramètre MaxClients dans mpm_prefork d'Apache. et la variable d'environnement PHP_FCGI_CHILDREN dans PHP FastCGI ordinaire
Paramètre de démarrage Le nombre de processus enfants créés uniquement lorsque pm est défini sur dynamique : min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm. min_spare_servers int
Définit le nombre minimum de processus de service inactifs uniquement. Utilisé lorsqu'il est défini sur dynamique
pm.max_spare_servers int
Définit le nombre maximum de processus de service inactifs
pm.max_requests int
. Set. Nombre de requêtes servies avant la renaissance de chaque processus enfant. Utile pour les modules tiers qui peuvent avoir des fuites de mémoire. Si défini sur '0', il est équivalent à la variable d'environnement PHP_FCGI_MAX_REQUESTS. Par défaut : 0. >
Connexe. recommandations :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!