問題描述:
Nginx 服務(wù)器大量499報錯
220.181.165.136 - - [18/May/2015:10:31:02 +0800] "POST /v1/jobsHTTP/1.1" 499 0 "" "bdHttpRequest/1.0.0"
115.239.212.7 - - [18/May/2015:10:31:03 +0800] "GET /v1/job/643309e3-dc73-4025-aa69-c9405c1d818fHTTP/1.1" 499 /?tn=91638679_hao_pg&s_j=1""Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko"
140.207.202.187 - - [18/May/2015:10:30:58 +0800] "POST/v3/violations HTTP/1.1" 499 0 "-" "-"
42.236.10.71 - - [18/May/2015:10:30:59 +0800] "POST /v3/violationsHTTP/1.1" 499 0 "-" "-"
106.120.173.17 - - [18/May/2015:10:30:58 +0800] "POST/v3/violations HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Windows NT6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131Safari/537.36"
180.97.35.164 - - [18/May/2015:10:30:52 +0800] "GET/v1/job/f86bdecc-2a61-4a42-bb7b-aa794b77f89b HTTP/1.1" 499 /s?word=%E5%8D%81%E5%A0%B0%E5%A4%A9%E6%B0%94&tn=sitehao123&ie=utf-8""Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
問題分析:
1 499出現(xiàn)的原因
google定義:
499 / ClientClosed Request
An Nginx HTTP server extension. This codeis introduced to log the case when the connection is closed by client whileHTTP server is processing its request, making server unable to send the HTTP header back
維基百科定義:
499Client Closed Request (Nginx)
Used in Nginx logs to indicate when the connection has been closed by client while the server is still processing itsrequest, making server unable to send a status code back
Nginx源碼:
grep一下nginx源碼,定義在ngx_request_t.h :
/*
* HTTP does notdefine the code for the case when a client closed
* the connectionwhile we are processing its request so we introduce
* own code to logsuch situation when a client has closed the connection
* before we even tryto send the HTTP header to it
*/
#define NGX_HTTP_CLIENT_CLOSED_REQUEST 499
這是nginx定義的一個狀態(tài)碼,用于表示這樣的錯誤:服務(wù)器返回http頭之前,客戶端就提前關(guān)閉了http連接
繼續(xù)grep :
這很有可能是因為服務(wù)器端處理的時間過長,客戶端“不耐煩”了。
要解決此問題,就需要在程序上面做些優(yōu)化了。
再grep下“NGX_HTTP_CLIENT_CLOSED_REQUEST”,發(fā)現(xiàn)目前這個狀態(tài)值只在ngx_upstream中賦值
upstream在以下幾種情況下會返回499:
(1)upstream 在收到讀寫事件處理之前時,會檢查連接是否可用:
ngx_http_upstream_check_broken_connection,
if (c->error) { //connecttion錯誤
……
if (!u->cacheable) { //upstream的cacheable為false,這個值跟http_cache模塊的設(shè)置有關(guān)。指示內(nèi)容是否緩存。
ngx_http_upstream_finalize_request(r, u, NGX_HTTP_CLIENT_CLOSED_REQUEST);
}
}
如上代碼,當(dāng)連接錯誤時會返回499。
(2)server處理請求未結(jié)束,而client提前關(guān)閉了連接,此時也會返回499。
(3)在一個upstream出錯,執(zhí)行next_upstream時也會判斷連接是否可用,不可用則返回499。
總之,這個錯誤的比例升高可能表明服務(wù)器upstream處理過慢,導(dǎo)致用戶提前關(guān)閉連接。而正常情況下有一個小比例是正常的。
繼續(xù)分析:
問題的**就是要排查為什么服務(wù)端處理時間過長
可能問題:
1 后臺python程序處理請求時間過長
2 mysql慢查詢
通過查看監(jiān)控:
1 cpu和內(nèi)存的使用,都在正常范圍
2 后臺程序訪問正常
3 MySQL沒有慢查詢
結(jié)果:
經(jīng)過詢問**后得知,這個nginx為查詢違章的api,用戶提交查詢后, python就去數(shù)據(jù)庫或者交通局的網(wǎng)站查詢。這個查詢會有消耗一定的時間,所以,用戶會主動斷開連接
解決問題:
proxy_ignore_client_abort on; #讓代理服務(wù)端不要主動關(guān)閉客戶端的連接。
默認 proxy_ignore_client_abort 是關(guān)閉的,此時在請求過程中如果客戶端端主動關(guān)閉請求或者客戶端網(wǎng)絡(luò)斷掉,那么 Nginx 會記錄 499,同時 request_time 是「后端已經(jīng)處理」的時間,而upstream_response_time 為“-“ (已驗證)。
如果使用了 proxy_ignore_client_abort on ;
那么客戶端主動斷掉連接之后,Nginx 會等待后端處理完(或者**時),然后記錄「后端的返回信息」到日志。所以,如果后端返回 200,就記錄 200 ;如果后端放回 5XX ,那么就記錄 5XX 。
如果**時(默認60s,可以用 proxy_read_timeout 設(shè)置),Nginx 會主動斷開連接,記錄 504
注:只在做反向代理的時候加入,作為其他服務(wù)器的時候,關(guān)閉為好,默認設(shè)置是關(guān)閉的!
?著作權(quán)歸作者所有:來自51CTO博客作者ssp4599815的原創(chuàng)作品
詞條
詞條說明
淘寶上**便宜的“監(jiān)控硬盤”是怎么回事?淘寶上有很多價格**便宜的硬盤,大多是“監(jiān)控硬盤”的名目。比如,2T的硬盤,三百出頭就能買到。天貓、京東上較少也要四百多的。我買了塊自稱“西數(shù)黑盤”的做倉庫盤用,用了一年多了,還挺穩(wěn)定。這種硬盤應(yīng)該肯定是拆機或二手的吧,倒也沒什么說的。不明白為什么都要說是“監(jiān)控硬盤”呢?好像和普通硬盤也沒什么區(qū)別。沒有數(shù)據(jù)校正,誤碼率一般是普通硬盤的10倍左右;因為是二手的監(jiān)控
戴爾PowerEdge R930價格是多少_戴爾PowerEdge R930怎么樣
產(chǎn)品類型:機架式CPU系列:Intel,至強處理器E7系列內(nèi)存類型:16×8GB/16GB/32GB DDR4 RDIMM/LRDIMM硬盤熱插拔:支持網(wǎng)卡:Matrox G200,帶8 MB顯存查看詳細參數(shù)>>這款戴爾PowerEdge R930是一款性能很穩(wěn)定的服務(wù)器,能夠積極響應(yīng)服務(wù)請求并進行處理,處理能力、穩(wěn)定性、可靠性、安全性、可擴展性、可管理性等方面的能力都有**。
華為 RH2485 V2價格是多少_華為 RH2485 V2怎么樣
產(chǎn)品類型:機架式產(chǎn)品結(jié)構(gòu):2UCPU系列:至強處理器E5系列,IntelCPU型號:Intel Xeon E5-4600CPU主頻:2.9GHz內(nèi)存類型:DDR3華為 RH2485 V2運行安全、穩(wěn)定,管理能力便捷。7x24小時不間斷提供可靠的服務(wù),遠離宕機、病毒等不安全因素。華為 RH2485 V2是服務(wù)器領(lǐng)域的優(yōu)質(zhì)產(chǎn)品,不是簡單的拼湊參數(shù),而是關(guān)注用戶的本質(zhì)需求,提供優(yōu)良的性能和品質(zhì)??偟膩碚f
服務(wù)器托管和租用差別服務(wù)器托管和租用差別主要在于:服務(wù)器托管,是指用戶將自己購買的服務(wù)器放置IDC機房,由IDC服務(wù)商提供用戶所需要的IP,帶寬,由用戶通過網(wǎng)絡(luò)來遠程管理與使用.服務(wù)器租用,是指由IDC服務(wù)商根據(jù)用戶需求提供所需要的服務(wù)器配置,IP,帶寬,并幫用戶安裝配置后,由用戶通過網(wǎng)絡(luò)來遠程管理和使用.兩者的區(qū)別主要在于服務(wù)器產(chǎn)權(quán)以及質(zhì)保方面.托管是用戶自己提供的機器,所以機器硬件歸用戶所有,
公司名: 深圳道通存儲技術(shù)有限公司
聯(lián)系人: 趙先生
電 話:
手 機: 18681551725
微 信: 18681551725
地 址: 廣東深圳福田區(qū)
郵 編:
網(wǎng) 址: dtstor.b2b168.com
杭州網(wǎng)絡(luò)儲存器等級劃分標(biāo)準 深圳道通存儲技術(shù)有限公司
聯(lián)想 SAS服務(wù)器硬盤代理經(jīng)銷商 深圳道通存儲技術(shù)有限公司
長春idc機房的分類標(biāo)準 深圳道通存儲技術(shù)有限公司
思科900G SAS服務(wù)器固態(tài)硬盤代理經(jīng)銷商 深圳道通存儲技術(shù)有限公司
IBM 14T SAS服務(wù)器硬盤代理經(jīng)銷商 深圳道通存儲技術(shù)有限公司
聯(lián)想8T SAS服務(wù)器固態(tài)硬盤批發(fā)采購渠道 深圳道通存儲技術(shù)有限公司
蒙古idc機房運維需要掌握的只是 深圳道通存儲技術(shù)有限公司
廣州分布式存儲機房規(guī)模排行榜 深圳道通存儲技術(shù)有限公司
公司名: 深圳道通存儲技術(shù)有限公司
聯(lián)系人: 趙先生
手 機: 18681551725
電 話:
地 址: 廣東深圳福田區(qū)
郵 編:
網(wǎng) 址: dtstor.b2b168.com
¥48.00
mediDVR 便攜式高清醫(yī)療錄像機 3042040
¥7800.00