46 votes

Erreur 502 dans nginx + php5-fpm

J'ai une erreur avec le subj. Le serveur n'est pas élevée en charge: ~15% de CPU, il y a plusieurs Go de mémoire, disque dur n'est pas buisy. Mais l'erreur 502 jette environ dans 3% des cas.

Programmes: Debian 6, nginx/0.7.62, php5-fpm (5.3.3-1).

Dans l'erreur.journal de nginx est cette erreur:

connect() to unix:/var/run/php5-fpm.sock failed

État de php5-fpm généralement comme ceci:

accepted conn:   41680
pool:             www
process manager:  dynamic
idle processes:   258
active processes: 1
total processes:  259

Je pense, c'est à dire le chargement n'est pas élevé.

J'ai augmenté l'arriéré params: dans sysctl net.de base.somaxconn = 5000, en php-fpm piscine - écouter.carnet de commandes = 5000. Pas d'effet.

Je cite une configuration:

/etc/nginx/nginx.conf

user www-data;
worker_processes  8;
timer_resolution 100ms;
worker_rlimit_nofile 20240;
worker_priority -5;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  2048;
    use epoll;
    # multi_accept on;
}

http {
    include       /etc/nginx/mime.types;

    access_log  /var/log/nginx/access.log;

    sendfile        on;
    tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;

    gzip  on;
    gzip_min_length 1100;
    gzip_buffers 64 8k;
    gzip_comp_level 3;
    gzip_http_version 1.1;
    gzip_proxied any;
    gzip_types text/plain application/xml application/x-javascript text/css;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

    client_max_body_size 100M;
    server_tokens off;
}

/etc/nginx/php_location

fastcgi_pass   unix:/var/run/php5-fpm.sock;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
fastcgi_buffers 256 128k;
#fastcgi_buffer_size 16k;
#fastcgi_busy_buffers_size 256k;
fastcgi_connect_timeout 300s;
fastcgi_send_timeout 300s;
fastcgi_read_timeout 300s;
include fastcgi_params;

php-fpm piscine

[www]
listen = /var/run/php5-fpm.sock
listen.backlog = 5000
listen.owner = www-data
listen.group = www-data
listen.mode = 0666
user = www-data
group = www-data
pm = dynamic
pm.max_children = 1024
pm.start_servers = 64
pm.min_spare_servers = 64
pm.max_spare_servers = 128
pm.max_requests = 32000
pm.status_path = /system/php5-fpm-status
slowlog = /var/www/log/php-fpm.log.slow
chdir = /var/www

Que puis-je faire pour optimiser ce système et de faire de cette utilisation de toutes les ressources du serveur?

PS. Je suis désolé, mon anglais est mauvais.

107voto

Dmitry Verkhoturov Points 2086

La question est prise elle-même, de ses problèmes sur la haute-cas de charge est bien connu. Veuillez utiliser le protocole TCP\IP de connexion au lieu de socket unix, pour cela vous avez besoin de faire ces changements:

  • en php-fpm configuration de pool de remplacer listen = /var/run/php5-fpm.sock avec listen = 127.0.0.1:7777
  • dans /etc/nginx/php_location remplacer fastcgi_pass unix:/var/run/php5-fpm.sock; avec fastcgi_pass 127.0.0.1:7777;

-6voto

New Alexandria Points 3106

J'ai le même problème, mais ne voulait pas passer de sockets TCP/IP. Le redémarrage de php-fpm et nginx permettra de résoudre le problème.

sudo /etc/init.d/php-fpm restart
sudo /etc/init.d/nginx restart

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X