502 kesalahan gateway buruk ditampilkan ketika beralih di antara halaman situs dan beberapa kali di halaman rumah tetapi tidak untuk permintaan pertama di halaman rumah hanya ketika halaman lain mengarahkan ulang ke halaman tersebut. dan itu terjadi untuk beberapa file javascript
load balancing yang dikonfigurasi pada dua upstreams php1 php2 keduanya adalah server apache.
Ketika saya memeriksa log kesalahan saya suka:
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/"
dan ini adalah konfigurasi server load balancing
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;
}
}
Saya mencari berjam-jam dan tidak ada yang membantu menemukan aliran saya naik dan tidak ada masalah dengan mereka.
Jawaban:
Ini bukan masalah dengan Nginx, ini adalah masalah dengan backend PHP Anda tidak merespons dalam waktu. Anda dapat menambahkan logging ke Nginx untuk membantu mengonfirmasi ini .
Sebagai titik referensi kedua, Anda dapat melakukannya
top
di server dan memeriksa secara manual apakah PHP membanting CPU untuk jangka waktu tertentu, indikator lain dari respons yang lambat.Jika respons PHP sangat lambat, Anda bisa meminta Nginx untuk menunggu lebih lama sebelum menyerah:
Dengan memeriksa log dengan informasi waktu yang ditautkan di atas, Anda harus dapat mengetahui permintaan mana yang lambat untuk diproses oleh PHP.
Untuk mempersempit masalahnya, kirim permintaan ini langsung ke backend PHP.
Bergantung pada apa yang terjadi, Anda mungkin juga dapat mengaktifkan caching dari beberapa permintaan di Nginx, menghindari beberapa permintaan yang lambat.
sumber
Tidak tahu apakah itu persis sama tetapi yang berhasil bagi saya adalah menambahkan max_fails = 0 di akhir nama server
upstream sm_url {server LOAD_BALANCER_DOMAIN_NAME: max_fails = 0; }
sumber
Ubah nama upstream menjadi "up_example.com" dan ubah
menjadi
sumber
$server_name
. Jika ini masalahnya, saya pikir dia akan memiliki masalah / sepanjang waktu, tidak hanya kadang-kadang seperti yang dilaporkan.