it-swarm.com.de

php-fpm.sock ist fehlgeschlagen (11: Ressource vorübergehend nicht verfügbar), während eine Verbindung zum Upstream hergestellt wurde

Ich habe folgende Fehler auf meiner Website, wenn ich 200 Treffer pro Sekunde teste.

Zuerst habe ich 499 Fehler erhalten

2017-04-09 03:22:45 Fehler 162.158.79.219 499 GET/HTTP/1.1 0 Nginx-Zugriff

2017-04-09 03:22:45 Fehler 162.158.79.87 499 GET/HTTP/1.1 0 Nginx-Zugriff

2017-04-09 03:22:45 Fehler 162.158.78.170 499 GET/HTTP/1.1 0 Nginx-Zugriff

2017-04-09 03:22:45 Fehler 162.158.78.68 499 GET/HTTP/1.1 0 Nginx-Zugriff

2. Fehler zeigt 502 an

2017-04-09 03:22:45 Fehler 162.158.79.135 502 GET/HTTP/1.1 166 Nginx-Zugriff

2017-04-09 03:22:45 Fehler 162.158.79.225 502 GET/HTTP/1.1 166 Nginx-Zugriff

2017-04-09 03:22:45 Fehler 162.158.78.110 502 GET/HTTP/1.1 166 Nginx-Zugriff

2017-04-09 03:22:45 Fehler 162.158.79.225 502 GET/HTTP/1.1 166 Nginx-Zugriff

und schließlich fange ich an, php-fpm.sock failed Fehler

2017-04-09 03:22:45 Fehler 162.158.79.207 20699 # 0: * 3826365 connect () to unix: ///var/www/vhosts/system/playhdpk.top/php-fpm.sock fehlgeschlagen (11: Ressource vorübergehend nicht verfügbar), während eine Verbindung zum Upstream-Nginx-Fehler hergestellt wird

2017-04-09 03:22:45 Fehler 162.158.79.207 20695 # 0: * 3826367 connect () to unix: ///var/www/vhosts/system/playhdpk.top/php-fpm.sock fehlgeschlagen (11: Ressource vorübergehend nicht verfügbar), während eine Verbindung zum Upstream-Nginx-Fehler hergestellt wird

2017-04-09 03:22:45 Fehler 162.158.79.207 20697 # 0: * 3826369 connect () to unix: ///var/www/vhosts/system/playhdpk.top/php-fpm.sock fehlgeschlagen (11: Ressource vorübergehend nicht verfügbar), während eine Verbindung zum Upstream-Nginx-Fehler hergestellt wird

Mein php-fpm-pool-settings sind unten, ich glaube, dieser erzeugt Fehler, kann ich falsch sein

listen.backlog = 65535

;[php-fpm-pool-settings]
pm = dynamic
pm.max_children = 5000
pm.start_servers = 50
pm.min_spare_servers = 20
pm.max_spare_servers = 70
pm.max_requests = 2000

Meine nginx conf sind unten

user  nginx;
worker_processes 8;

# number of file descriptors used for nginx
# the limit for the maximum FDs on the server is usually set by the OS.
# if you don't set FD's then OS settings will be used which is by default 2000
worker_rlimit_nofile 99999;

error_log /var/log/nginx/error.log crit;

include /etc/nginx/modules.conf.d/*.conf;

events {

    worker_connections 16192;
    use epoll;
    multi_accept on;
}


http {
    include   mime.types;
    default_type  application/octet-stream;

    open_file_cache max=2048 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 5;
    open_file_cache_errors off;


    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_requests 100000;
    reset_timedout_connection on;
    client_body_timeout 30;
    send_timeout 15;

    client_header_timeout 12;
    proxy_connect_timeout  600s;
    proxy_send_timeout  600s;
    proxy_read_timeout  600s;

    fastcgi_buffers 8 128k;
    fastcgi_buffer_size 256k;
    fastcgi_send_timeout 600s;
    fastcgi_read_timeout 600s;

    types_hash_max_size 2048;

    gzip on;
    gzip_min_length 1000;
    gzip_proxied expired no-cache no-store private auth;
    gzip_types application/x-javascript text/css application/javascript text/javascript text/plain text/xml application/json application/v$
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";


    server_tokens off;

    include /etc/nginx/conf.d/*.conf;
}

Hinweis: Die Serverspezifikationen sind unten aufgeführt

OS CentOS 7.3

Prozessor: Intel Xeon E5-1620v2 - 4c/8t - 3,7 GHz/3,9 GH

Sever Ram: 64 GB DDR3

6
Hassaan

Wenn ich die Antwort von @Artsiom für immer ablehnen könnte, würde ich.

pm.max_children = 4000 bedeutet bis zu 4K Worker-Prozesse. Wenn der Verkehr sehr schnell und zusammen mit pm.max_requests = 0, die Worker werden niemals recycelt, die RAM-Nutzung wird mit der Zeit unbegrenzt zunehmen und der Server wird früher oder später nicht mehr über genügend Speicher verfügen (ausgefallen, eingefroren).

PHP-FPM max_children sollte sorgfältig und schrittweise angehoben werden, während die Swap-Nutzung überwacht wird.

Sie können eine Formel wie die folgenden verwenden:

pm.max_children = ((total RAM in MB) - (how much MySQL and others take in RAM)) / 80

Wobei 80 MB das durchschnittliche Gewicht eines PHP-FPM-Worker-Prozesses sind, wenn Ihr PHP Framework) leicht ist. Nehmen Sie für schwere Dinge wie Magento 2 stattdessen mindestens 128 MB.

Und der pm.max_requests sollte ein "begrenzter" Wert sein. Auf Servern mit höheren Spezifikationen können Sie es tatsächlich erhöhen (z. B. 10000), während dies auf Low-End-Servern auf den kleinsten Wert (z. B. 500 bis sogar 100) eingestellt werden sollte, um RAM "Nutzung" zu reduzieren). Schwankungen. Aber es ist kein Szenario, ich würde es auf 0 (unbegrenzt) setzen, weil ein Wert von 0 impliziert, dass Ihr Code/PHP und alle seine Erweiterungen absolut frei von Speicherlecks sind. Nur dann ist es wäre in Ordnung, auf 0 gesetzt zu werden !!!

6

Anfragen nicht einschränken Geben Sie ihnen Arbeit frei)

pm = ondemand 
 pm.max_children = 4000 
 pm.start_servers = 10 
 pm.min_spare_servers = 10 
 pm.max_requests = 0 
2
Artsiom