Nginx ve PHP-FPM bağlantı kopuyor


9

Böyle hatalarla karşılaşıyorum,

[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

Php-fpm için ayarlarımı bunlara değiştirdim,

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

Sonuçlanan

[02-Jun-2012 01:39:19] WARNING: [pool www] server reached pm.max_children setting (150), consider raising it

Az önce trafikte oldukça fazla trafik alan yeni bir web sitesi açtım. Bu trafik meşrudur ve kullanıcılar sınıra ulaşıldığında 504 ağ geçidi zaman aşımı süresi almaktadır.

IPTABLES ile sunucumla sınırlı bağlantım var ve fail2ban çalıştırıyorum ve nginx erişim günlüklerini takip ediyorum. Trafik tamamen meşru, ben sadece kullanıcılar için yer kalmıyorum.

Şu anda ubuntu 64bit ile çift çekirdekli bir kutu üzerinde çalışıyorum.

free
             total       used       free     shared    buffers     cached
Mem:       6114284    5726984     387300          0     141612    4985384
-/+ buffers/cache:     599988    5514296
Swap:       524284       5804     518480

Benim php.ini max_input_time = 60

Benim nginx yapılandırmam

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;
}

Bağlantıların bitmesini durdurmak için ne yapabilirim? Bu neden devam ediyor? Google Analytics'teki trafiğimi gerçek zamanlı olarak izliyorum ve kullanıcı sayısı yaklaşık 120'nin üzerine çıktığında php-fpm.log'm bu uyarılarla dolu ..

Yanıtlar:


5

Günlük iletisinde verilen hassas tavsiyelere uymayı ve değerini artırmayı düşündünüz mü pm.max_children? Onları yerleştirmek için bir sürü boş RAM var.

Sorularınızı cevaplamak için:

  • Bağlantıların bitmesini durdurmak için ne yapabilirim? Daha fazla bağlantı sağlayın veya aldığınız bağlantı sayısını azaltın.
  • Bu neden devam ediyor? Çünkü bağlantılarınız bitiyor.

Üzgünüm, 100'den 150'ye güncelledikten sonra bu hata zaman damgalıdır .... Evet var. Tüm koçum için hangi ayarı yapmalıyım?
E3pO

Sen artırmalıdır o kadar (free/mem_per_worker)+150, nereye freedikkate bellek gereksinimleri daha yük ile artacaktır diğer süreçlerin ihtiyaçlarını aldıktan sonra olacak bellek miktarıdır ve mem_per_workersen gerektiren her PHP çalışan işlemi öngörüyor maksimum bellek miktarıdır.
womble

4

Aynı sorunu web sunucularımızda da yaşadık.

Bellek sızıntılarını önlemek için her X isteğinde alt işlemi yeniden doğurtmaya çalışabilirsiniz. Apache ve FPM'de iyi çalıştı, iyi çalışmaya başladı.

 pm.max_requests = 50000

Bu, her 50k istekde bir alt işlemi yeniden başlatır

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.