摘要:今天發(fā)現(xiàn)有不少的錯(cuò)誤,大約占了將近,而且是在新上線了一個(gè)含的業(yè)務(wù)之后。總之,這個(gè)錯(cuò)誤的比例升高可能表明服務(wù)器處理過慢,導(dǎo)致用戶提前關(guān)閉連接。而正常情況下有一個(gè)小比例是正常的。
今天發(fā)現(xiàn)nginx有不少的499錯(cuò)誤,大約占了將近0.5%,而且是在新上線了一個(gè)含upstream的業(yè)務(wù)之后。
grep一下nginx源碼,定義在ngx_request_t.h
/* * HTTP does not define the code for the case when a client closed * the connection while we are processing its request so we introduce * own code to log such situation when a client has closed the connection * before we even try to send the HTTP header to it */ #define NGX_HTTP_CLIENT_CLOSED_REQUEST 499
這下就很清楚了,這是nginx定義的一個(gè)狀態(tài)碼,用于表示這樣的錯(cuò)誤:服務(wù)器返回http頭之前,客戶端就提前關(guān)閉了http連接。
再grep下“NGX_HTTP_CLIENT_CLOSED_REQUEST”,發(fā)現(xiàn)目前這個(gè)狀態(tài)值只在ngx_upstream中賦值。
upstream在以下幾種情況下會(huì)返回499:
(1)upstream 在收到讀寫事件處理之前時(shí),會(huì)檢查連接是否可用:ngx_http_upstream_check_broken_connection,
if (c->error) { //connecttion錯(cuò)誤 …… if (!u->cacheable) { //upstream的cacheable為false,這個(gè)值跟http_cache模塊的設(shè)置有關(guān)。指示內(nèi)容是否緩存。 ngx_http_upstream_finalize_request(r, u, NGX_HTTP_CLIENT_CLOSED_REQUEST); } }
如上代碼,當(dāng)連接錯(cuò)誤時(shí)會(huì)返回499。
(2)server處理請求未結(jié)束,而client提前關(guān)閉了連接,此時(shí)也會(huì)返回499。
(3)在一個(gè)upstream出錯(cuò),執(zhí)行next_upstream時(shí)也會(huì)判斷連接是否可用,不可用則返回499。
總之,這個(gè)錯(cuò)誤的比例升高可能表明服務(wù)器upstream處理過慢,導(dǎo)致用戶提前關(guān)閉連接。而正常情況下有一個(gè)小比例是正常的。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/39151.html
摘要:序本文主要來聊一下的當(dāng)中出現(xiàn)的問題。問題描述原因服務(wù)器返回頭之前,客戶端就提前關(guān)閉了連接,常見于后臺接口處理時(shí)間比較長,而前端請求又自帶有超時(shí)時(shí)間。復(fù)現(xiàn)請求實(shí)例帶超時(shí)時(shí)間請求后臺接口關(guān)于如下實(shí)例服務(wù)器排障之錯(cuò)誤的解決 序 本文主要來聊一下nginx的access log當(dāng)中出現(xiàn)的499問題。 問題描述 499 CLIENT CLOSED REQUEST A non-standard s...
摘要:周三晚加上了對阿波羅超時(shí)的監(jiān)控,周四觀察上線期間阿波羅超時(shí)指標(biāo)的變化,時(shí)間也吻合。月日下午又報(bào)了一次警與此同時(shí)的阿波羅超時(shí)監(jiān)控這里同時(shí)列出機(jī)器指標(biāo)的目的是為了說明,盡管沒有報(bào)警,但機(jī)器的指標(biāo)變化和是統(tǒng)一的。 順風(fēng)車運(yùn)營研發(fā)團(tuán)隊(duì) 熊浩含 問題現(xiàn)象 線上報(bào)警群里時(shí)而有php-fpm-idle的零星報(bào)警,持續(xù)時(shí)間很短(幾秒甚至一秒),見下圖 showImg(https://segmentf...
摘要:目的錯(cuò)誤碼告警和超時(shí)告警超時(shí)告警數(shù)據(jù)分析關(guān)于錯(cuò)誤和超時(shí)監(jiān)控有一點(diǎn)要考慮的是收到告警時(shí),要能夠快速知道是哪個(gè)后端服務(wù)節(jié)點(diǎn)出現(xiàn)了問題。關(guān)于消息隊(duì)列的選擇,前面已經(jīng)提到我們已有集群就直接拿來用了。 背景 在我們的系統(tǒng)架構(gòu)中,Nginx作為所有HTTP請求的入口,是非常重要的一層。每天產(chǎn)生大量的Nginx Access Log,閑置在硬盤上實(shí)在是太浪費(fèi)資源了。所以,能不能把Nginx日志利用起...
摘要:最終獲得一個(gè)鏈接,里面有這樣的描述如何在阿里云負(fù)載均衡上啟用支持無需配置,當(dāng)選用監(jiān)聽時(shí),默認(rèn)支持無加密版本協(xié)議協(xié)議當(dāng)選擇監(jiān)聽時(shí),默認(rèn)支持加密版本的協(xié)議協(xié)議。詳細(xì)參見如何使用負(fù)載均衡性能保障型實(shí)例。 Websocket是HTML5之后的一個(gè)新事物,可以方便的實(shí)現(xiàn)客戶端到服務(wù)端的長會(huì)話,特別適合用于客戶端需要接收服務(wù)端推送的場景。例如在線客服聊天,提醒推送等等。改變了以往客戶端只能通過輪詢...
閱讀 3488·2021-09-02 09:53
閱讀 1808·2021-08-26 14:13
閱讀 2769·2019-08-30 15:44
閱讀 1331·2019-08-30 14:03
閱讀 1981·2019-08-26 13:42
閱讀 3029·2019-08-26 12:21
閱讀 1317·2019-08-26 11:54
閱讀 1911·2019-08-26 10:46