Je continue à rencontrer des erreurs comme celles-ci,
[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
J'ai changé mes paramètres pour php-fpm en ceux-ci,
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
Résultant en
[02-Jun-2012 01:39:19] WARNING: [pool www] server reached pm.max_children setting (150), consider raising it
Je viens de lancer un nouveau site Web qui reçoit un trafic considérable. Ce trafic est légitime et les utilisateurs obtiennent 504 délais d'attente de passerelle lorsque la limite est atteinte.
J'ai des connexions limitées à mon serveur avec IPTABLES et j'exécute fail2ban et je garde la trace des journaux d'accès nginx. Le trafic est tout à fait légitime, je manque de place pour les utilisateurs.
Je suis actuellement en train de tourner sur une box dual core avec ubuntu 64bit.
free
total used free shared buffers cached
Mem: 6114284 5726984 387300 0 141612 4985384
-/+ buffers/cache: 599988 5514296
Swap: 524284 5804 518480
Mon php.ini max_input_time = 60
Ma configuration nginx est
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;
}
Que puis-je faire pour arrêter de manquer de connexions? Pourquoi cela continue-t-il de se produire? Je surveille mon trafic sur Google Analytics en temps réel et lorsque le nombre d'utilisateurs dépasse 120, mon php-fpm.log est plein de ces avertissements.
(free/mem_per_worker)+150
, oùfree
est la quantité de mémoire que vous aurez après avoir pris en compte les besoins d'autres processus dont les besoins en mémoire augmenteront avec plus de charge, etmem_per_worker
c'est la quantité maximale de mémoire que vous prévoyez pour chaque processus de travail PHP nécessitant.Nous avons eu le même problème sur nos serveurs Web.
Vous pouvez essayer de faire réapparaître le processus enfant à chaque requête X, pour éviter les fuites de mémoire. Cela a bien fonctionné dans Apache et FPM, cela commence également à bien fonctionner.
Cela redémarrera un processus enfant toutes les 50 000 demandes
la source