Position actuelle: Accueil> Derniers articles> La raison et une solution efficace pour 502 Bad Gateway Error dans PHP-FPM

La raison et une solution efficace pour 502 Bad Gateway Error dans PHP-FPM

gitbox 2025-06-23

Fond d'erreur PHP-FPM 502

PHP-FPM (FastCGI Process Manager) est un moteur d'exécution important pour PHP dans un environnement de concurrence élevé et est largement utilisé dans Nginx comme support backend. Une erreur de passerelle 502 indique généralement que la communication entre Nginx et PHP-FPM a une réponse interrompue ou anormale. Cet article présentera des raisons possibles et des solutions d'optimisation à partir de plusieurs aspects.

1. Le processus PHP-FPM se termine anormalement

Dans les scénarios de charge élevée, le processus PHP-FPM peut s'écraser en raison de l'épuisement des ressources ou de la configuration inappropriée, ce qui entraîne l'incapacité de traiter la demande, ce qui entraîne une erreur 502. Vous pouvez afficher l'état du processus et essayer de redémarrer le service:

 
$ systemctl status php-fpm
$ systemctl restart php-fpm

2. Les paramètres de configuration du pool de processus sont déraisonnables

Si le paramètre PHP-FPM Process Pool est défini mal, si le paramètre Max_Children est trop petit, la demande peut être bloquée ou rejetée. Il est recommandé de vérifier et d'optimiser la configuration suivante:

 
$ vim /etc/php-fpm.d/www.conf

La configuration recommandée est la suivante:

 
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30
pm.max_requests = 500

3. Traitement de la demande de traitement

Lorsque les scripts PHP sont traités trop longtemps, tels que le traitement des fichiers volumineux ou la logique métier complexe, le paramètre de délai d'expiration par défaut peut ne pas être suffisant, interrompant ainsi la connexion à Nginx.

Le délai d'attente de connexion peut être étendu par:

 
$ vim /etc/php-fpm.d/www.conf

Suggestions de paramètres:

 
request_terminate_timeout = 180

4. Erreur de configuration Nginx

Si le paramètre de chemin ou de paramètre FASTCGI dans le fichier de configuration NGINX est incorrect, la demande ne peut pas être transmise avec succès à PHP-FPM, déclenchant une erreur 502.

Veuillez vérifier la configuration de l'emplacement des demandes PHP dans nginx.conf :

 
$ vim /etc/nginx/nginx.conf

Exemple de configuration correcte:

 
location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

5. Verbe d'étranglement des ressources du serveur

Si la mémoire du serveur ou les ressources CPU sont fortement occupées, PHP-FPM ne peut pas créer un nouveau processus pour répondre à la demande, ce qui peut également provoquer une erreur 502.

Vous pouvez surveiller l'utilisation des ressources du serveur via les commandes suivantes:

 
$ top
$ free -m

Si vous confirmez que les ressources sont insuffisantes, vous pouvez envisager de mettre à niveau la configuration matérielle ou de réduire la consommation de ressources en optimisant le code et le mécanisme de mise en cache.

Résumer

Pour résoudre les erreurs PHP-FPM 502, nous devons considérer de manière approfondie l'état du processus, les paramètres de configuration, le temps de traitement de la demande, le chemin de communication entre NGINX et PHP-FPM, et l'utilisation des ressources du serveur lui-même. Grâce à une configuration raisonnable et à l'optimisation des ressources, non seulement les erreurs de 502 peuvent être évitées, mais la stabilité globale du service et la vitesse de réponse peuvent également être améliorées.