最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析nginx 客戶端返回499的錯(cuò)誤碼的問(wèn)題

 更新時(shí)間:2022年10月30日 08:32:28   作者:飛翔碼農(nóng)  
我們服務(wù)器客戶端一直有返回錯(cuò)誤碼499的日志,以前覺(jué)得比例不高,就沒(méi)有仔細(xì)查過(guò),最近有領(lǐng)導(dǎo)問(wèn)這個(gè)問(wèn)題,為什么耗時(shí)只有0.0幾秒,為啥還499了?最近幾天就把這個(gè)問(wèn)題跟蹤定位了一下,這里做個(gè)記錄,對(duì)nginx返回499錯(cuò)誤碼相關(guān)知識(shí)感興趣的朋友一起看看吧

我們服務(wù)器客戶端一直有返回錯(cuò)誤碼499的日志,以前覺(jué)得比例不高,就沒(méi)有仔細(xì)查過(guò),最近有領(lǐng)導(dǎo)問(wèn)這個(gè)問(wèn)題,為什么耗時(shí)只有0.0幾秒,為啥還499了?最近幾天就把這個(gè)問(wèn)題跟蹤定位了一下,這里做個(gè)記錄

網(wǎng)絡(luò)架構(gòu)和背景

我們服務(wù)架構(gòu)和錯(cuò)誤碼是上面這樣的,上游服務(wù)日志沒(méi)有記錄,無(wú)法確定kong到上游服務(wù)的連接和請(qǐng)求細(xì)節(jié)。

kong上的日志
rsp_cost:0.041
rsp_length:0
rsp_status:499
ups_rsp_cost:-
ups_rsp_length:0
ups_rsp_status:-
waf上的日志
rsp_cost:1.045
rsp_length:0
rsp_status:499
ups_rsp_cost:-
ups_rsp_length:0
ups_rsp_status:-

看日志,兩個(gè)負(fù)載均衡的現(xiàn)象一毛一樣,kong upstream到web服務(wù)上,不太確定是upstream 鏈接的問(wèn)題或者是讀寫(xiě)數(shù)據(jù)的問(wèn)題,或者是kong自己的問(wèn)題,根本就沒(méi)有反向代理到上游服務(wù)

上游服務(wù)抓包

打算在上游服務(wù)上抓一下包,看看請(qǐng)求是在kong上出問(wèn)題了,根本沒(méi)到上游服務(wù),還是說(shuō)已經(jīng)到了上游服務(wù),上游服務(wù)出問(wèn)題了。

83是kong的ip,82是上游服務(wù)的ip
可以看到,83首先發(fā)了fin包,表示要斷開(kāi)連接,之后82也回復(fù)了fin的ack包,之后82還在發(fā)送數(shù)據(jù)包,過(guò)了大概0.18秒,82才給83發(fā)了fin ack包,表示可以斷開(kāi)連接了。這時(shí)候由于83早就斷開(kāi)了連接,在這個(gè)中間的包,83回復(fù)了RST,我們使用的是長(zhǎng)鏈接,83斷開(kāi)連接之后,新的連接已經(jīng)復(fù)用這個(gè)TCP連接了,這時(shí)候83只能回復(fù)RST。大概過(guò)程就是這樣的。

kong為什么要斷開(kāi)連接?
由于我們使用upstream是長(zhǎng)鏈接,猜測(cè)了很多種可能

  • keepalive_requests 超過(guò)keepalive_requests個(gè)請(qǐng)求后就會(huì)關(guān)閉長(zhǎng)鏈接
  • keepalive_time 超過(guò)keepalive_time時(shí)間后就會(huì)關(guān)閉長(zhǎng)鏈接
  • keepalive_timeout 打開(kāi)上游服務(wù)的超時(shí)時(shí)間,連接超過(guò)keepalive_timeout就認(rèn)為上游服務(wù)已經(jīng)不可用了,這個(gè)參數(shù)就直接排除了,抓包已經(jīng)看到請(qǐng)求已經(jīng)到了上游服務(wù)

最后都放棄了這個(gè)配置,覺(jué)得Nginx應(yīng)該會(huì)處理完請(qǐng)求之后再受到keepalive_requests keepalive_time的限制關(guān)閉連接,不可能請(qǐng)求處理一半然后直接主動(dòng)關(guān)閉連接,還有一個(gè)原因,我們的Nginx版本是1.13,也沒(méi)有這些配置可以修改。

負(fù)載均衡的問(wèn)題?

最后懷疑是waf上的問(wèn)題,waf上請(qǐng)求量太大,沒(méi)去waf機(jī)器上抓包,猜測(cè)waf抓包跟kong的結(jié)果是一樣的,然后向前推測(cè)waf為什么要斷開(kāi)連接,猜測(cè)是不是客戶端斷開(kāi)了連接,如果是客戶端斷開(kāi)連接的話,所有的看到的日志現(xiàn)象就是通的。
為了驗(yàn)證這個(gè)猜測(cè),我們?cè)跍y(cè)試環(huán)境模擬了一下客戶端主動(dòng)斷開(kāi)連接的操作。
我們先在的上游服務(wù)上模擬了一個(gè)耗時(shí)的請(qǐng)求,然后再?zèng)]有返回結(jié)果的時(shí)候主動(dòng)斷開(kāi)請(qǐng)求。

class TestController extends BaseController
{
    public function actionTest()
    {
        sleep(3);
        return $this->response->success(array("test","geekbang","es"));
    }
}

然后我們?cè)诮K端上使用curl請(qǐng)求接口,在三秒之內(nèi)取消請(qǐng)求。
curl https://test.com/test/test/testctrl+C 取消請(qǐng)求
然后觀察waf的日志,以及kong的日志,跟生產(chǎn)出現(xiàn)的499錯(cuò)誤碼表現(xiàn)是一樣的。
基本上確定是客戶端主動(dòng)斷開(kāi)連接引起的。

修改配置 Nginx的配置

看一下proxy_ignore_client_abort說(shuō)明

Syntax:	proxy_ignore_client_abort on | off;
Default:	
proxy_ignore_client_abort off;
Determines whether the connection with a proxied server should be closed when a client closes the connection without waiting for a response.

確定當(dāng)客戶端在不等待響應(yīng)的情況下關(guān)閉連接時(shí),是否應(yīng)該關(guān)閉與代理服務(wù)器的連接。
客戶端不等待響應(yīng)關(guān)閉連接時(shí),默認(rèn)會(huì)關(guān)閉與代理服務(wù)器的連接,改為on就是代理服務(wù)器不關(guān)閉,直到代理服務(wù)器處理完請(qǐng)求。
在kong上修改配置
proxy_ignore_client_abort on
改了一臺(tái)機(jī)器,觀察了一天,確定了是因?yàn)檫@個(gè)配置,后面把兩臺(tái)機(jī)器都改了之后就沒(méi)有再出現(xiàn)499的錯(cuò)誤碼。修改了這個(gè)配置之后,盡管錯(cuò)誤碼消失了,但是無(wú)效的請(qǐng)求會(huì)增加上游服務(wù)的壓力,本來(lái)這個(gè)請(qǐng)求已經(jīng)無(wú)意義被客戶端關(guān)閉了,然后上游服務(wù)也被關(guān)閉了。打開(kāi)之后,上游服務(wù)不會(huì)被關(guān)閉,直到請(qǐng)求處理完畢,有利有弊,需要權(quán)衡和取舍。

到此這篇關(guān)于nginx 客戶端返回499的錯(cuò)誤碼的文章就介紹到這了,更多相關(guān)nginx返回499錯(cuò)誤碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx服務(wù)器的反向代理proxy_pass配置方法講解

    Nginx服務(wù)器的反向代理proxy_pass配置方法講解

    這篇文章主要介紹了Nginx服務(wù)器的反向代理proxy_pass配置方法講解,包括經(jīng)常被提到的url的/問(wèn)題的相關(guān)說(shuō)明,需要的朋友可以參考下
    2016-01-01
  • Nginx中autoindex的具體使用

    Nginx中autoindex的具體使用

    autoindex是Nginx配置的一個(gè)指令,它可以控制Nginx是否允許在瀏覽器中顯示一個(gè)目錄的內(nèi)容,本文主要介紹了Nginx中autoindex的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • Nginx 分發(fā)策略的實(shí)現(xiàn)

    Nginx 分發(fā)策略的實(shí)現(xiàn)

    分發(fā)策略是將客戶端請(qǐng)求根據(jù)一定的規(guī)則或算法,可以分配到不同的后端服務(wù)器上,本文就來(lái)介紹一下Nginx分發(fā)策略的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-02-02
  • Nginx 合并請(qǐng)求連接且加速網(wǎng)站訪問(wèn)實(shí)例詳解

    Nginx 合并請(qǐng)求連接且加速網(wǎng)站訪問(wèn)實(shí)例詳解

    這篇文章主要介紹了Nginx 合并請(qǐng)求連接且加速網(wǎng)站訪問(wèn)實(shí)例詳解,瀏覽器的并發(fā)請(qǐng)求數(shù)目限制是針對(duì)同一域名的,同一時(shí)間針對(duì)同一域名下的請(qǐng)求有一定數(shù)量限制,超過(guò)限制數(shù)目的請(qǐng)求會(huì)被阻塞,需要的朋友可以參考下
    2019-07-07
  • 把ImageMagic庫(kù)編譯進(jìn)nginx服務(wù)器的一些必要配置

    把ImageMagic庫(kù)編譯進(jìn)nginx服務(wù)器的一些必要配置

    這篇文章主要介紹了把ImageMagic庫(kù)編譯進(jìn)nginx服務(wù)器的一些必要配置,本文給出了操作步驟和配置參數(shù)示例,需要的朋友可以參考下
    2015-06-06
  • 安裝Windows版nginx及部署前端代碼并解決刷新出現(xiàn)404問(wèn)題

    安裝Windows版nginx及部署前端代碼并解決刷新出現(xiàn)404問(wèn)題

    這篇文章主要給大家介紹了關(guān)于安裝Windows版nginx及部署前端代碼解決刷新出現(xiàn)404問(wèn)題的相關(guān)資料,使用nginx部署前端項(xiàng)目是一篇非常詳細(xì)的教程,旨在幫助初學(xué)者使用Nginx來(lái)部署前端項(xiàng)目,需要的朋友可以參考下
    2023-12-12
  • nginx的配置轉(zhuǎn)發(fā)到其他網(wǎng)站詳解

    nginx的配置轉(zhuǎn)發(fā)到其他網(wǎng)站詳解

    這篇文章主要為大家介紹了nginx的配置轉(zhuǎn)發(fā)到其他網(wǎng)站過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • nginx幾種網(wǎng)頁(yè)重定向(rewirte)的配置方法詳解

    nginx幾種網(wǎng)頁(yè)重定向(rewirte)的配置方法詳解

    這篇文章主要詳細(xì)介紹了nginx幾種網(wǎng)頁(yè)重定向(rewirte)的配置方法,文中通過(guò)代碼示例和圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • Nginx配置多個(gè)訪問(wèn)路徑的實(shí)現(xiàn)

    Nginx配置多個(gè)訪問(wèn)路徑的實(shí)現(xiàn)

    本文主要介紹了Nginx配置多個(gè)訪問(wèn)路徑的實(shí)現(xiàn),Nginx通過(guò)配置多個(gè)service就可以實(shí)現(xiàn)多訪問(wèn)路徑,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • Windows系統(tǒng)中Nginx下載安裝部署教程(實(shí)測(cè)有效)

    Windows系統(tǒng)中Nginx下載安裝部署教程(實(shí)測(cè)有效)

    Nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,也是一個(gè)IMAP/POP3/SMTP代理服務(wù)器,下面這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)中Nginx下載安裝部署的相關(guān)資料,需要的朋友可以參考下
    2024-08-08

最新評(píng)論

偃师市| 清河县| 城步| 南昌市| 孝义市| 罗田县| 万山特区| 平泉县| 娄烦县| 青龙| 华安县| 海原县| 桐乡市| 万盛区| 刚察县| 潢川县| 拉孜县| 酉阳| 吉水县| 盘锦市| 芦溪县| 成都市| 扶沟县| 伊金霍洛旗| 鄂伦春自治旗| 昌图县| 昭苏县| 礼泉县| 莆田市| 资溪县| 庆元县| 庆城县| 洛隆县| 贡嘎县| 漳平市| 镇雄县| 安化县| 凤阳县| 石首市| 盱眙县| 玉屏|