web-dev-qa-db-fra.com

Connexion à unix: /var/run/php5-fpm.sock a échoué. Quel est le problème avec ma configuration?

J'ai un VPS de 2 Go sur DigitalOcean et j'héberge WordPress 3.9.1 sous Debian 7 avec NGINX, php-fpm et socket Unix.

Il fonctionnait parfaitement jusqu'à la semaine dernière, il a commencé à afficher une erreur "502 bad gateway". J'ai vérifié les journaux et constaté que:

le journal php5-fpm montre que pm.max_children a été atteint et le journal nginx montre ce qui suit:

[erreur] 3239 # 0: * 15188 connect () à unix: /var/run/php5-fpm.sock a échoué (11: ressource temporairement indisponible) lors de la connexion en amont, client: xxx.xxx.xxx.xxx, serveur: mon.domaine, demande: "POST /xmlrpc.php HTTP/1.0", en amont: "fastcgi: // unix: /var/run/php5-fpm.sock:", hôte: "xxx.xxx.xxx.xxx"

J'ai changé manuellement pm avec différents paramètres sans succès. Je redémarre toujours les démons après chaque changement.

les paramètres pm sont:

pm = dynamic 
pm.max_children = 100 
pm.start_servers = 10 
pm.min_spare_servers = 10 
pm.max_spare_servers = 10 
pm.max_requests = 200

www.conf a la listen = /var/run/php5-fpm.sock activée.

Quelqu'un avec une expérience similaire?

18
vsapountzis

Le premier problème est que vous spécifiez 100 max_children, ce qui est terriblement élevé pour 2 Go. Je laisserais tomber à 25 enfants. Voir mon article ici sur la façon d'optimiser votre configuration php-fpm pour votre configuration:

AVERTISSEMENT: [pool www] semble occupé (vous devrez peut-être augmenter pm.start_servers ou pm.min/max_spare_servers), apparition

En outre, l'utilisation de sockets Unix est légèrement plus rapide car elle vous offre un accès direct au réseau sans surcharge TCP/IP. En revanche, il n'est pas aussi évolutif que TCP/IP. Nginx générera 502 erreurs lorsque les sockets seront épuisées. Dans un tel cas, vous pouvez soit modifier les paramètres du système d'exploitation pour accueillir le plus grand pool de connexions ou simplement basculer pour basculer vers TCP/IP.

Dans votre changement de conf fastcgi:

fastcgi_pass unix:/var/run/php5-fpm.sock;

à:

fastcgi_pass 127.0.0.1:9000;

Notez que le port 9000 est le port par défaut défini dans php-fpm, si vous avez modifié php-fpm pour écouter sur un autre port, échangez 9000 avec cette valeur. Assurez-vous de redémarrer à la fois php-fpm et nginx.

Maintenant, si après tout cela, vous ne pouvez toujours pas le faire fonctionner et free -m retourne une utilisation élevée de la mémoire, alors il est temps d'ajouter plus de RAM à votre serveur.

22
Rijndael