wake-up-neo.net

Fehler 502 in nginx + php5-fpm

Ich habe einen Fehler mit subj. Server nicht hoch geladen: ~ 15% CPU, es gibt mehrere GB Speicher, HDD ist nicht belegt. Der Fehler 502 wirft jedoch ungefähr in 3% der Fälle.

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

In error.log von nginx ist dieser Fehler: 

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

Der Zustand von php5-fpm sieht normalerweise so aus:

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

Ich denke, diese mittlere Belastung ist nicht hoch.

Ich habe die Anzahl der Rückstände erhöht: in sysctl - net.core.somaxconn = 5000, im php-fpm-Pool - listen.backlog = 5000. Keine Auswirkung.

Ich zitiere eine Konfiguration:

/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 pool

[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

Was kann ich tun, um dieses System zu optimieren und alle Serverressourcen nutzen zu lassen?

PS. Es tut mir leid, mein Englisch ist schlecht.

43
andre487

Das Problem ist Socket selbst, seine Probleme bei Hochlastfällen sind bekannt. Erwägen Sie die Verwendung einer TCP\IP-Verbindung anstelle von Unix-Socket. Dazu müssen Sie diese Änderungen vornehmen:

  • in php-fpm pool configuration listen = /var/run/php5-fpm.sock durch listen = 127.0.0.1:7777 ersetzen
  • in/etc/nginx/php_location fastcgi_pass unix:/var/run/php5-fpm.sock; durch fastcgi_pass 127.0.0.1:7777; ersetzen
104

Zu Centos 7, Plesk 12.5

Ich hatte dieses Problem, nachdem meine Festplatte voll war und einige Dienste fehlgeschlagen sind . Andere Domains funktionieren einwandfrei, aber keine davon hat mir nur 502 und ähnliche Timeouts verschafft. Aus dem Errorlog:

[crit] 3112#0: *65746768 connect() to 
unix:///var/www/vhosts/system/sub.domain.de/php-fpm.sock failed 
(2: No such file or directory) while connecting to upstream

Um es zu lösen, musste ich php-fpm und nginx neu starten (und erst dann Speicherplatz freigeben) - dann verschwand dieser Fehler!

2
Nibbels

Der einzige Grund, warum diese Datei nicht erstellt wurde, ist die Konfiguration unter /etc/php-fpm.d/www.conf

Ändern listen = 127.0.0.1:9000

Mit listen = /var/run/php-fpm/php-fpm.sock

Und dann starten Sie Nginx und PHP-Fpm neu

0
Rohit Gupta