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.
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:
listen = /var/run/php5-fpm.sock
durch listen = 127.0.0.1:7777
ersetzenfastcgi_pass unix:/var/run/php5-fpm.sock;
durch fastcgi_pass 127.0.0.1:7777;
ersetzenZu 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!
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