Saya terus mengalami kesalahan seperti ini,
[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
Saya mengubah pengaturan untuk php-fpm ke ini,
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
Yang menghasilkan
[02-Jun-2012 01:39:19] WARNING: [pool www] server reached pm.max_children setting (150), consider raising it
Saya baru saja meluncurkan situs web baru yang mendapatkan jumlah lalu lintas yang cukup besar. Lalu lintas ini sah dan pengguna mendapatkan 504 batas waktu gerbang ketika batas tercapai.
Saya memiliki koneksi terbatas ke server saya dengan IPTABLES dan saya menjalankan fail2ban dan melacak log akses nginx. Lalu lintas semuanya sah, saya hanya kehabisan ruang untuk pengguna.
Saya saat ini berjalan pada kotak dual core dengan ubuntu 64bit.
free
total used free shared buffers cached
Mem: 6114284 5726984 387300 0 141612 4985384
-/+ buffers/cache: 599988 5514296
Swap: 524284 5804 518480
Php.ini saya max_input_time = 60
Konfigurasi nginx saya adalah
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;
}
Apa yang bisa saya lakukan untuk berhenti kehabisan koneksi? Mengapa ini terus terjadi? Saya memantau lalu lintas saya di Google Analytics secara realtime dan ketika jumlah pengguna di atas sekitar 120 php-fpm.log saya penuh dengan peringatan ini ..
(free/mem_per_worker)+150
, di manafree
jumlah memori yang akan Anda miliki setelah memperhitungkan kebutuhan proses lain yang persyaratan memorinya akan meningkat dengan lebih banyak beban, danmem_per_worker
adalah jumlah maksimum memori yang Anda ramalkan setiap proses yang dibutuhkan oleh pekerja PHP.Kami memiliki masalah yang sama pada server web kami.
Anda dapat mencoba untuk respawn proses anak setiap permintaan X, untuk menghindari kebocoran memori. Ini bekerja dengan baik di Apache dan FPM mulai bekerja dengan baik.
Ini akan memulai kembali proses anak setiap permintaan 50rb
sumber