


Optimisation de la configuration PHP-FPM pour un débit maximal
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.
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.

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.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.
? 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, Nginxlisten ... 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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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

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.

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.

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.

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

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.

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.

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.
