Ich stoße immer wieder auf solche Fehler.
[02-Jun-2012 01:52:04] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 19 idle, and 49 total children
[02-Jun-2012 01:52:05] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 16 children, there are 19 idle, and 50 total children
[02-Jun-2012 01:52:06] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 19 idle, and 51 total children
[02-Jun-2012 03:10:51] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 18 idle, and 91 total children
Ich habe meine Einstellungen für php-fpm auf diese geändert,
pm.max_children = 150 (It was at 100, i got a max_children reached and upped to 150)
pm.start_servers = 75
pm.min_spare_servers = 20
pm.max_spare_servers = 150
Ergebend
[02-Jun-2012 01:39:19] WARNING: [pool www] server reached pm.max_children setting (150), consider raising it
Ich habe gerade eine neue Website gestartet, auf der eine beträchtliche Menge an Verkehr herrscht. Dieser Datenverkehr ist legitim und Benutzer erhalten 504 Gateway-Zeitüberschreitungen, wenn das Limit erreicht ist.
Ich habe mit IPTABLES nur begrenzte Verbindungen zu meinem Server und führe fail2ban aus und verfolge die Nginx-Zugriffsprotokolle. Der Verkehr ist alles legitim, ich habe gerade keinen Platz mehr für Benutzer.
Ich laufe derzeit auf einer Dual-Core-Box mit Ubuntu 64bit.
free
total used free shared buffers cached
Mem: 6114284 5726984 387300 0 141612 4985384
-/+ buffers/cache: 599988 5514296
Swap: 524284 5804 518480
Meine php.ini max_input_time = 60
Meine Nginx-Konfiguration ist
worker_processes 4;
pid /var/run/nginx.pid;
events {
worker_connections 19000;
# multi_accept on;
}
worker_rlimit_nofile 20000; #each connection needs a filehandle (or 2 if you are proxying)
client_max_body_size 30M;
client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 5 5;
send_timeout 10;
location ~ \.php$ {
try_files $uri /er/error.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_max_temp_file_size 0;
fastcgi_intercept_errors on;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
Was kann ich tun, um keine Verbindungen mehr zu haben? Warum tritt das immer wieder auf? Ich überwache meinen Datenverkehr in Google Analytics in Echtzeit und wenn die Anzahl der Nutzer über 120 liegt, ist mein php-fpm.log voll von diesen Warnungen.
(free/mem_per_worker)+150
, wofree
sich die Speichermenge befindet, die Sie haben, nachdem Sie die Anforderungen anderer Prozesse berücksichtigt haben, deren Speicherbedarf mit zunehmender Auslastung zunimmt. Diesmem_per_worker
ist die maximale Speichermenge, die Sie für jeden PHP-Worker-Prozess benötigen.Wir hatten das gleiche Problem auf unseren Webservern.
Sie können versuchen, den untergeordneten Prozess bei jeder X-Anforderung erneut zu starten, um Speicherverluste zu vermeiden. In Apache und FPM hat es gut funktioniert, es beginnt auch gut zu funktionieren.
Dadurch wird alle 50.000 Anforderungen ein untergeordneter Prozess neu gestartet
quelle