nginx tentang isu percubaan semula proxy_pass
高洛峰
高洛峰 2017-05-16 17:23:48
0
1
815

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~

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(1)
给我你的怀抱

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!