国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

nginx 關(guān)于 proxy_pass 重試的問(wèn)題

瀏覽:119日期:2024-06-19 15:51:04

問(wèn)題描述

各位大神,我的nginx會(huì)通過(guò)proxy_pass去調(diào)tomcat,但是tomcat會(huì)間歇性抽風(fēng)(fullgc)導(dǎo)致超時(shí),7-8秒吧

我想了一個(gè)辦法就是請(qǐng)求第一次的時(shí)候設(shè)置一個(gè)超時(shí)時(shí)間,比如說(shuō)1s,如果超時(shí)了,就在請(qǐng)求一次(換一臺(tái)機(jī)器)

然后我就有了下面這個(gè)nginx配置.(下面是用flask的sleep模擬tomcat的fullgc)

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;} }

8088和8089的服務(wù)是我用寫(xiě)的一個(gè)mock服務(wù)8088會(huì)直接睡秒2s,導(dǎo)致nginx超時(shí)8089會(huì)直接返回一個(gè)'hello world',200

我的期望是當(dāng)我用命令行 curl反復(fù)請(qǐng)求8087的時(shí)候,會(huì)始終返回 'hello world',雖然有些請(qǐng)求比較快,有些請(qǐng)求比較慢(1s多,因?yàn)榻?jīng)過(guò)了一次超時(shí)請(qǐng)求之后重新進(jìn)行的請(qǐng)求)

但是結(jié)果卻并不是這樣

當(dāng)請(qǐng)求超過(guò)1s后,8087他就直接返回 504錯(cuò)誤了

nginx 關(guān)于 proxy_pass 重試的問(wèn)題

通過(guò)查看nginx后臺(tái)日志:連續(xù)打印了3條超時(shí)記錄:

nginx 關(guān)于 proxy_pass 重試的問(wèn)題

但是8088(sleep的那個(gè)服務(wù),)僅僅只收到了一個(gè)請(qǐng)求(有些小異常,用flask寫(xiě)的)

nginx 關(guān)于 proxy_pass 重試的問(wèn)題

然后我用wireshark抓包發(fā)現(xiàn)

nginx 關(guān)于 proxy_pass 重試的問(wèn)題

求助各位大神?我的配置哪里有問(wèn)題嗎??

這里可能提提供了些無(wú)關(guān)信息,如果沒(méi)用可以忽略哈~

如過(guò)有其他好的處理tomcat fullgc超時(shí)問(wèn)題的,也非常感謝啊~

問(wèn)題解答

回答1:

You asked for one try, then nginx tries that once.

try 和 retry 是不同的。你 proxy_next_upstream_tries 2; 試試。另外你似乎也誤解了 proxy_next_upstream_timeout 的意思。把它也去掉。

相關(guān)文章:
主站蜘蛛池模板: 彩票| 清镇市| 柞水县| 东光县| 宜州市| 晋宁县| 三台县| 高平市| 大埔县| 玉林市| 镇宁| 清流县| 鹰潭市| 从化市| 万宁市| 旬邑县| 沂水县| 长葛市| 张北县| 贵州省| 鸡泽县| 扎兰屯市| 永寿县| 册亨县| 阳泉市| 上林县| 黔江区| 社会| 肃宁县| 南陵县| 乐都县| 聂拉木县| 吴忠市| 永胜县| 博罗县| 哈密市| 芜湖市| 青神县| 霍州市| 河池市| 英德市|