cari

Rumah  >  Soal Jawab  >  teks badan

nginx tentang isu percubaan semula proxy_pass

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.

Tapi hasilnya tak macam ni

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??

Mungkin ada maklumat yang tidak relevan diberikan di sini Jika ia tidak berguna, anda boleh mengabaikannya~

Sekiranya ada penyelesaian lain yang baik untuk masalah tamat masa tomcat fullgc, saya juga akan sangat berterima kasih~

高洛峰高洛峰2749 hari yang lalu858

membalas semua(1)saya akan balas

  • 给我你的怀抱

    给我你的怀抱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.

    balas
    0
  • Batalbalas