Maison >développement back-end >Problème PHP >Que faire si php-cgi s'arrête sous Linux

Que faire si php-cgi s'arrête sous Linux

王林
王林original
2021-09-26 16:32:572395parcourir

La solution à l'arrêt de php-cgi sous Linux est la suivante : modifiez les éléments de configuration de nginx, réduisez le nombre de requêtes FastCGI et essayez de conserver les tampons inchangés, tels que [fastcgi_buffer_size 128k;].

Que faire si php-cgi s'arrête sous Linux

L'environnement d'exploitation de cet article : Linux 5.9.8, php 7, ordinateur thinkpad t480.

Avant-propos :

J'ai découvert par hasard qu'un serveur en production (mémoire centos 5.2 64 bits 4G) avait toujours le problème que le site Web ne pouvait pas être ouvert. Plus tard, je suis allé sur le serveur pour vérifier et j'ai découvert que nginx et php-cgi étaient en cours d'exécution, mais l'utilisation du processeur de php-cgi était de 0 à ce moment-là. J'ai donc immédiatement vérifié la limite de handle de fichier :

ulimit -n

Le résultat était : 1024, ce qui est trop petit pour les services en production.

La plupart des solutions proposées en ligne consistent à saisir directement

ulimit -SHn 51200 # 51200可自己根据应用调整

L'inconvénient de cette méthode est évident Une fois déconnecté, les paramètres deviendront invalides.

Il est également dit d'écrire la commande directement dans /etc/rc.d/rc.local Aujourd'hui, j'ai trouvé une manière correcte

Ouvrir /etc/security/limits.conf Il contient des commentaires très détaillés. l'ensemble suivant (sinon, insérez-le)

Le code est le suivant

* soft nofile 51200
* hard nofile 51200

Connectez-vous à nouveau après avoir quitté et vérifiez le nombre de poignées. Il a été correctement réglé sur 51200.

Si vous rencontrez une situation similaire, vous pouvez vérifier si elle est causée par un paramètre de numéro de descripteur de fichier trop petit.

Solution à 502 Bad Gateway lors de l'accès

Nginx 502 Bad Gateway signifie que le php-cgi demandé a été exécuté, mais pour une raison quelconque (généralement un problème de lecture des ressources), il n'a pas été terminé, ce qui entraîne php-cgi Le processus se termine. Généralement, les sites Web avec une concurrence trop élevée sont sujets à cette erreur. Il existe de nombreuses raisons pour lesquelles 502 Bad Gateway apparaît, mais la plupart des gens peuvent le résoudre en modifiant les paramètres ci-dessous.

Modifiez plusieurs éléments de configuration de nginx pour réduire le nombre de requêtes FastCGI et essayez de garder les tampons inchangés :

Le code est le suivant

fastcgi_buffer_size 128k;
fastcgi_buffers 2 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;

Ouvrez le fichier /usr/local/php/etc/php-fpm.conf et modifiez les quelques paramètres suivants :

Le code est le suivant

25
requests">2048
65535
30s
60s

request_terminate_timeout fait référence au temps d'exécution du script de fast-cgi, qui est par défaut de 0s. La signification des 0 est de laisser php-cgi continuer à s'exécuter sans limite de temps. Si vous le réglez sur 0 ici, alors lorsqu'une mauvaise passerelle 502 apparaît, l'état 502 continuera et ne changera pas. Mais si vous le définissez sur 5 secondes, alors php-cgi récupérera automatiquement après 5 secondes. Cette valeur peut être définie en fonction des performances de votre serveur. Ici, je la fixe à 60s.

max_children représente le processus de traitement de php-cgi. Si max_children est défini sur une valeur plus petite, comme 5-10, alors php-cgi sera "très fatigué", la vitesse de traitement sera très lente et le temps d'attente sera plus long. Si la demande n'est pas traitée pendant une longue période, une erreur 504 Gateway Time-out se produira. Le paramètre max_children doit également être défini en fonction des performances du serveur. À mesure que le nombre de processus augmente, l'utilisation de la mémoire augmentera en conséquence, la mémoire consommée par chaque php-cgi est d'environ 20 Mo. Ici, je l'ai défini sur. 25.

La méthode de traitement statique par défaut de php-fpm fera que le processus php-cgi occupera de la mémoire pendant une longue période et ne pourra pas être libéré. ​​C'est également l'une des raisons des erreurs nginx. Par conséquent, la méthode de traitement de php-fpm. peut être modifié en mode de type Apache.

Une fois la modification terminée, exécutez lu-restart (système de gestion de serveur LuManager).

Apprentissage recommandé : Formation 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:
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