Rumah > Soal Jawab > teks badan
Tuan-tuan yang dihormati, nginx saya akan melaraskan kucing jantan melalui proxy_pass, tetapi kucing jantan akan mengejang (fullgc) sekejap-sekejap, menyebabkan tamat masa, kira-kira 7-8 saat
Saya terfikir cara untuk menetapkan tamat masa apabila meminta buat kali pertama, seperti 1s Jika tamat masa, minta sahaja lagi (tukar mesin)
Kemudian saya mempunyai konfigurasi nginx berikut (Berikut menggunakan flask's sleep untuk mensimulasikan fullgc tomcat)
upstream up {
server 127.0.0.1:8088;
server 127.0.0.1:8089;
}
server {
listen 8087;
server_name localhost;
access_log logs/host.access.log main;
location / {
proxy_connect_timeout 1s;
proxy_send_timeout 1s;
proxy_read_timeout 1s;
proxy_next_upstream_timeout 1s;
proxy_next_upstream_tries 1;
send_timeout 1s;
# proxy_next_upstream timeout error;
proxy_pass http://up;
}
}
Perkhidmatan 8088 dan 8089 adalah perkhidmatan palsu yang ditulis oleh saya
8088 akan terus tidur selama 2 saat, menyebabkan nginx tamat masa
8089 akan terus membalas "hello world", 200
Jangkaan saya ialah
Apabila saya menggunakan baris arahan untuk meminta 8087 berulang kali, "hello world" akan sentiasa dikembalikan Walaupun sesetengah permintaan lebih cepat dan ada yang lebih perlahan (lebih daripada 1s, kerana permintaan itu diminta semula selepas permintaan tamat masa)curl
.
Apabila permintaan melebihi 1 saat, 8087 akan terus mengembalikan ralat 504
Dengan melihat log latar belakang nginx:
3 rekod tamat masa dicetak secara berterusan:
Tetapi 8088 (perkhidmatan tidur) hanya menerima satu permintaan (beberapa pengecualian kecil, ditulis dalam kelalang)
Kemudian saya menggunakan wireshark untuk menangkap paket dan mengetahui
Boleh tolong saya?
Ada yang tak kena dengan konfigurasi saya??
Sekiranya ada penyelesaian lain yang baik untuk masalah tamat masa tomcat fullgc, saya juga akan sangat berterima kasih~
给我你的怀抱2017-05-16 17:25:48
Anda minta sekali cuba, kemudian nginx cuba sekali.
cuba dan cuba semula adalah berbeza. Anda cuba proxy_next_upstream_tries 2;. Selain itu, anda nampaknya telah salah faham maksud proxy_next_upstream_timeout. Buang itu juga.