Table des matières
1. Choisissez le bon gestionnaire de processus (PM)
2. Définissez pm.max_children en fonction de la mémoire disponible
3. Paramètres de gestion de la demande et de délai d'expiration
4. Optimiser les E / S et la concurrence
5. Surveiller et itérer
Bonus: utilisez l'opcache
Maison développement back-end tutoriel php Optimisation de la configuration PHP-FPM pour un débit maximal

Optimisation de la configuration PHP-FPM pour un débit maximal

Jul 24, 2025 pm 05:42 PM
php-fpm Optimisation des performances

Utilisez Dynamic Process Manager pour la plupart des cas, statique pour un trafic élevé régulier et évitez l'ondemand pour un débit élevé; 2. Définissez PM.max_children basé sur la RAM disponible divisée par la mémoire de processus PHP moyenne, laissant la hauteur de l'espace pour empêcher l'échange; 3. Configurez PM.max_requests pour recycler les travailleurs et empêcher les fuites de mémoire, définissez request_termiate_timeout pour tuer les demandes de longue durée, permettre à Slowlog de suivre les goulots d'étranglement; 4. Utilisez Unix Sockets pour les frais généraux d'E / S inférieurs, ajustez Listend.BackLog pour correspondre aux paramètres du serveur Web, augmentez Rlimit_Files si nécessaire; 5. Surveiller en continu l'état FPM, les temps de réponse en amont et les mesures système à l'aide d'outils comme HTOP ou Grafana; De plus, activez OPCACH avec des paramètres appropriés pour réduire les frais généraux d'analyse du script et augmenter considérablement les performances, car même le PHP-FPM bien réglé sous-perforrera sans lui.

Optimisation de la configuration PHP-FPM pour un débit maximal

L'optimisation de PHP-FPM pour un débit maximal ne concerne pas le lancement de chaque paramètre sur le maximum - il s'agit d'aligner la configuration avec le comportement, les ressources du serveur de votre application. Le PHP-FPM mal réglé peut entraîner des temps de réponse lents, une utilisation élevée de la mémoire ou même 502 erreurs sous charge. Voici comment en tirer le meilleur parti.

Optimisation de la configuration PHP-FPM pour un débit maximal

1. Choisissez le bon gestionnaire de processus (PM)

PHP-FPM prend en charge trois gestionnaires de processus: static , dynamic et ondemand . Votre choix affecte directement les performances et l'utilisation des ressources.

  • dynamic (recommandé pour la plupart des cas)
    Équilibre les performances et la mémoire. Garde un bassin de processus d'enfants qui peuvent croître ou rétrécir en fonction de la demande.

    Optimisation de la configuration PHP-FPM pour un débit maximal
     pm = dynamique
    pm.max_children = 50
    pm.start_servers = 10
    pm.min_spare_servers = 5
    pm.max_spare_servers = 15
  • static
    Tous les processus d'enfants sont engendrés au démarrage. Mieux pour un trafic élevé et cohérent lorsque vous pouvez vous permettre la mémoire.

     PM = statique
    pm.max_children = 30
  • ondemand
    Proigne les enfants uniquement lorsque les demandes arrivent. Économise la mémoire mais augmente la latence pendant les pointes de trafic - pas idéal pour les scénarios à haut débit.

    Optimisation de la configuration PHP-FPM pour un débit maximal

? Règle de base: utilisez dynamic sauf si vous avez un trafic prévisible et régulier et que vous souhaitez minimiser les frais généraux de gestion des processus.


2. Définissez pm.max_children en fonction de la mémoire disponible

C'est le paramètre le plus critique . Trop élevé = épuisement de la mémoire. Trop bas = demande de file d'attente.

Estimer max_children:

 max_children = RAM total dédié au PHP-FPM / mémoire moyenne par processus PHP

Par exemple:

  • Vous allouez 2 Go de RAM à PHP-FPM
  • Le processus PHP moyen utilise ~ 64 Mo
  • 2048 MB / 64 MB = 32

Donc, définissez pm.max_children = 32 (laissez une hauteur de hauteur pour les frais généraux du système).

Vous pouvez vérifier la mémoire par processus en utilisant:

 PS --No-Headers -o "RSS, CMD" -C PHP-FPM | awk '{sum = $ 1} end {print int (sum / nr / 1024) "MB"}'

⚠️ Évitez la mémoire trop engagée - l'échange tue les performances.


3. Paramètres de gestion de la demande et de délai d'expiration

Les demandes de longue durée ou coincées peuvent épuiser la piscine des travailleurs.

 pm.max_requests = 500; Redémarrer les travailleurs après 500 demandes (aide à prévenir les fuites de mémoire)
pm.process_idle_timeout = 10s; Pour 'ondemand' seulement
request_termine_timeout = 30s; Tuer les demandes prenant plus de 30 ans
request_slowlog_timeout = 5s; Enregistrer les demandes lents (paire avec Slowlog)
catch_workers_output = oui; Capture Stdout / Stderr
  • pm.max_requests aide à atténuer les fuites de mémoire dans les scripts de longue date (par exemple, le code hérité).
  • request_terminate_timeout empêche la suspension des demandes de blocage des travailleurs.
  • Permettre à slowlog d'identifier les goulots d'étranglement:
     slowlog = /var/log/php-fpm-slow.log

4. Optimiser les E / S et la concurrence

PHP-FPM fonctionne mieux lorsqu'il ne devient pas le goulot d'étranglement. Associez-le avec un serveur Web rapide (comme Nginx) et optimisez le flux de demande.

  • Utilisez des connexions de socket au lieu de TCP (si sur le même hôte):

     écouter = /run/php/php8.1-fpm.sock
    écouter.Owner = www-data
    écouter.group = www-data
    écouter.mode = 0660

    Les prises UNIX ont des frais généraux inférieurs à 127.0.0.1:9000 .

  • Ajustez listen.backlog si vous voyez les refus de connexion:

     écouter.backlog = 511

    Définissez-le près de l' backlog du serveur Web (par exemple, Nginx listen ... backlog=511 ).

  • Augmentez rlimit_files si les limites du descripteur de fichiers atteignent:

     rlimit_files = 65535

5. Surveiller et itérer

Le réglage n'est pas ponctuel. Surveiller les mesures clés:

  • Page d'état FPM (Activer dans la configuration du pool):

     pm.status_path = / statut

    Accès via le serveur Web pour voir les processus actifs / inactifs, la longueur de file d'attente, etc.

  • Temps de réponse en amont de Nginx - Les attentes longues peuvent indiquer la saturation du FPM.

  • Métriques du système: CPU, mémoire, échange et moyenne de charge.

Utilisez des outils comme htop , sysdig ou Prometheus Grafana pour plus profondément.


Bonus: utilisez l'opcache

PHP-FPM gère la gestion des processus, mais Opcache réduit considérablement l'analyse des scripts.

 opcache.enable = 1
opcache.memory_consumption = 256
opcache.max_accelerated_files = 20000
opcache.validate_timestamps = 0; Désactiver en production (réactiver pour les déploiements)
opcache.fast_shutdown = 1

Sans Opcache, même un FPM parfaitement réglé sous-performance.


Fondamentalement, l'optimisation de PHP-FPM se résume à: faire correspondre max_children à la mémoire, choisir le bon gestionnaire de processus, empêcher les demandes de coiffure et réduire les frais généraux d'E / S. Combinez cela avec OPCACHE et surveillance, et vous vous composerez le plus de débit de votre pile PHP.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1538
276
Ticage de performances Nginx: Optimisation de la vitesse et de la faible latence Ticage de performances Nginx: Optimisation de la vitesse et de la faible latence Apr 05, 2025 am 12:08 AM

Le réglage des performances de Nginx peut être obtenu en ajustant le nombre de processus de travail, la taille du pool de connexion, l'activation des protocoles de compression GZIP et HTTP / 2 et en utilisant l'équilibrage du cache et de la charge. 1. Ajustez le nombre de processus de travail et la taille du pool de connexion: Worker_ProcessesAuto; Événements {Worker_Connections1024;}. 2. Activer la compression GZIP et le protocole http / 2: http {gzipon; serveur {écouter443sslhttp2;}}. 3. Utilisez l'optimisation du cache: http {proxy_cache_path / path / to / cachelevels = 1: 2k

Apache Performance Tuning: Optimisation de la vitesse et de l'efficacité Apache Performance Tuning: Optimisation de la vitesse et de l'efficacité Apr 04, 2025 am 12:11 AM

Les méthodes pour améliorer les performances d'Apache incluent: 1. Ajustez les paramètres Keepalive, 2. Optimiser les paramètres multi-processus / thread, 3. Utilisez MOD_DEFLATE pour la compression, 4. Implémentez le cache et l'équilibrage de la charge, 5. Optimiser la journalisation. Grâce à ces stratégies, la vitesse de réponse et les capacités de traitement simultanées des serveurs Apache peuvent être considérablement améliorées.

Comment envisager l'optimisation des performances dans la conception de classes C++ ? Comment envisager l'optimisation des performances dans la conception de classes C++ ? Jun 05, 2024 pm 12:28 PM

Les conseils pour améliorer les performances dans la conception de classes C++ incluent : éviter les copies inutiles, optimiser la disposition des données et utiliser constexpr. Cas pratique : Utiliser le pool d'objets pour optimiser la création et la destruction d'objets.

Échelle de traitement XML / RSS: techniques d'optimisation des performances Échelle de traitement XML / RSS: techniques d'optimisation des performances Apr 27, 2025 am 12:28 AM

Lors du traitement des données XML et RSS, vous pouvez optimiser les performances via les étapes suivantes: 1) Utilisez des analyseurs efficaces tels que LXML pour améliorer la vitesse d'analyse; 2) Utilisez des analyseurs de sax pour réduire l'utilisation de la mémoire; 3) Utiliser les expressions XPATH pour améliorer l'efficacité d'extraction des données; 4) Implémentez le traitement parallèle multi-processus pour améliorer la vitesse de traitement.

Établissement d'un environnement de développement intégré entre NGINX et PHP-FPM Établissement d'un environnement de développement intégré entre NGINX et PHP-FPM Apr 13, 2025 pm 10:15 PM

La clé de la combinaison efficace de nginx et php-fpm est que Nginx transmet les demandes de PHP à PHP-FPM. La configuration 1.Nginx doit inclure des blocs de localisation, spécifier des règles pour le traitement des fichiers .php et définir FastCGI_PASS pour pointer de l'adresse d'écoute PHP-FPM (généralement 127.0.0.1:9000). 2. La configuration avancée comprend l'équilibrage de la charge Nginx, les ressources statiques de cache et la configuration sécurisée. 3. Les questions fréquemment posées incluent la défaillance du démarrage PHP-FPM, Nginx ne peut pas se connecter aux erreurs PHP-FPM et 502, et vous devez vérifier la configuration et le processus PHP-FPM. 4. L'optimisation des performances peut être ajustée en ajustant le nombre de processus PHP-FPM, en permettant à Opcache et en permettant

Analyse des questions fréquemment posées sur l'optimisation des performances PHP Analyse des questions fréquemment posées sur l'optimisation des performances PHP Jun 05, 2024 pm 05:10 PM

Améliorez les performances de PHP en permettant à OPCache de mettre en cache le code compilé. Utilisez un framework de mise en cache tel que Memcached pour stocker les données fréquemment utilisées. Réduisez les requêtes de base de données (par exemple en mettant en cache les résultats des requêtes). Optimisez le code (par exemple, utilisez des fonctions en ligne). Utilisez des outils d'analyse des performances tels que XHProf pour identifier les goulots d'étranglement des performances.

Yii 2.0 Dive profonde: réglage et optimisation des performances Yii 2.0 Dive profonde: réglage et optimisation des performances Apr 10, 2025 am 09:43 AM

Les stratégies pour améliorer les performances de l'application YII2.0 incluent: 1. Optimisation des requêtes de base de données, en utilisant QueryBuilder et ActiveRecord pour sélectionner des champs spécifiques et limiter les ensembles de résultats; 2. Stratégie de mise en cache, utilisation rationnelle des données, de la requête et du cache de page; 3. Optimisation au niveau du code, réduction de la création d'objets et utilisant des algorithmes efficaces. Grâce à ces méthodes, les performances des applications YII2.0 peuvent être considérablement améliorées.

Comment optimiser la disposition des structures de données en C? Comment optimiser la disposition des structures de données en C? Apr 28, 2025 pm 08:51 PM

L'optimisation de la disposition des structures de données en C peut être réalisée à travers les étapes suivantes: 1. Ajuster l'alignement de la mémoire et réduire le rembourrage, tels que le tri des membres de la structure par taille. 2. Améliorer la convivialité du cache et assembler des membres fréquemment visités ensemble. 3. Optimisez le tri des membres du struct et placez les membres les plus visités devant. 4. Redimensionner la structure afin qu'il s'agisse d'un multiple de lignes de cache pour réduire l'accès aux lignes croisées. Grâce à ces méthodes, les performances du programme et l'utilisation de la mémoire peuvent être considérablement améliorées.

See all articles