nginx: yukarı akışa bağlanırken canlı yukarı akış yok


16

Ana sayfadaki site sayfaları arasında ve bazı zamanlarda geçiş yapılırken 502 hatalı ağ geçidi hatası görüntüleniyor, ancak ana sayfadaki ilk istek için değil, yalnızca başka bir sayfa ona yeniden yönlendirildiğinde. ve bazı javascript dosyaları için

yük dengeleme iki yukarı akış yapılandırılmış php1 php2 her ikisi de apache sunucusudur.

Hata günlüğünü kontrol ettiğimde:

no live upstreams while connecting to upstream

[error] 27212#0: *314 no live upstreams while connecting to   upstream, client: ip_address , server: example.com, request: "GET / HTTP/1.1", upstream: "http://example.com", host: "example.com", referrer: "http://example.com/mypages/"

ve bu yük dengeleme sunucusu yapılandırması

  upstream example.com  {
    #  ip_hash;
      server php01 max_fails=3 fail_timeout=15s;
      server php02 max_fails=3 fail_timeout=15s;
    }

    server {
      listen IP:80;
      server_name example.com;
      access_log /var/log/nginx/example.com.access;
      error_log /var/log/nginx/example.com.error error;

     location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass  http://$server_name/$uri;
        proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;
        proxy_cache_bypass $http_pragma $http_authorization;
        proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
        proxy_no_cache $http_pragma $http_authorization;
      }

    }

Ben saatlerce aradım ve yararlı hiçbir şey akışlarım bulundu ve onlarla hiçbir sorun bulundu.


Memba sunucularınız (php01, php02) çalışıyor mu? Ngnix makinesinden onlara telnet yapabilir misiniz?
nötrinus

Bağlılar.
Mohammad Jolani

Akış yukarı sunucuların trafiği işlemek için yeterli işlem yürüttüğünü kontrol ettiniz mi? Herhangi bir nedenle istekleri reddediyorlarsa, akış yukarı sunucu günlüklerini kontrol etmelisiniz.
Tero Kilkanen

Yaptım ve herhangi bir akış yukarı hata günlüğü ve kötü ağ geçidi istekleri için erişim günlüğü ile hiçbir sorun.
Mohammad Jolani

Bu soruna bir çözüm buldunuz mu?
flickerfly

Yanıtlar:


4

Bu Nginx ile ilgili bir sorun değil, PHP arka uçlarınızın zamanında yanıt vermemesi ile ilgili bir sorundur. Bunu onaylamanıza yardımcı olması için Nginx'e günlük kaydı ekleyebilirsiniz .

İkinci bir referans noktası topolarak, sunucuda çalışabilir ve PHP'nin CPU'yu belirli bir süre için çarpıp çarpmadığını manuel olarak kontrol edebilirsiniz , bu da yavaş yanıtların başka bir göstergesidir.

PHP'den gelen çok yavaş yanıtlar sizin için uygunsa, Nginx'ten vazgeçmeden önce daha uzun süre beklemesini isteyebilirsiniz:

 # Wait 5 minutes before giving up on the backend!
 proxy_read_timeout 5m; 

Günlükleri yukarıda belirtilen zamanlama bilgileriyle inceleyerek PHP'nin işleyebilmesi için hangi isteklerin yavaş olduğunu anlayabilmelisiniz.

Sorunu daraltmak için, bu istekleri doğrudan PHP arka ucuna gönderin.

Neler olduğuna bağlı olarak, bazı yavaş isteklerden kaçınarak Nginx'teki bazı isteklerin önbelleğe alınmasını da etkinleştirebilirsiniz.


1

Aynı olup olmadığını bilmiyorum ama benim için işe yarayan şey sunucu adının sonuna max_fails = 0 eklemekti

akış yukarı sm_url {sunucu LOAD_BALANCER_DOMAIN_NAME: max_fails = 0; }


-3

Giriş akışını "up_example.com" olarak yeniden adlandırın ve değiştirin

proxy_pass  http://$server_name/$uri;

olmak

proxy_pass  http://up_$server_name$uri;

Alışılmadık olsa da, kullanımı ile ilgili herhangi bir teknik sorun görmüyorum $server_name. Bu sorun olsaydı, sadece rapor edildiği gibi değil, her zaman / her zaman sorun yaşayacağını düşünüyorum.
Mark Stosberg
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.