問題描述:
Nginx 服務器大量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)碼,用于表示這樣的錯誤:服務器返回http頭之前,客戶端就提前關閉了http連接
繼續(xù)grep :
這很有可能是因為服務器端處理的時間過長,客戶端“不耐煩”了。
要解決此問題,就需要在程序上面做些優(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模塊的設置有關。指示內容是否緩存。
ngx_http_upstream_finalize_request(r, u, NGX_HTTP_CLIENT_CLOSED_REQUEST);
}
}
如上代碼,當連接錯誤時會返回499。
(2)server處理請求未結束,而client提前關閉了連接,此時也會返回499。
(3)在一個upstream出錯,執(zhí)行next_upstream時也會判斷連接是否可用,不可用則返回499。
總之,這個錯誤的比例升高可能表明服務器upstream處理過慢,導致用戶提前關閉連接。而正常情況下有一個小比例是正常的。
繼續(xù)分析:
問題的**就是要排查為什么服務端處理時間過長
可能問題:
1 后臺python程序處理請求時間過長
2 mysql慢查詢
通過查看監(jiān)控:
1 cpu和內存的使用,都在正常范圍
2 后臺程序訪問正常
3 MySQL沒有慢查詢
結果:
經(jīng)過詢問**后得知,這個nginx為查詢違章的api,用戶提交查詢后, python就去數(shù)據(jù)庫或者交通局的網(wǎng)站查詢。這個查詢會有消耗一定的時間,所以,用戶會主動斷開連接
解決問題:
proxy_ignore_client_abort on; #讓代理服務端不要主動關閉客戶端的連接。
默認 proxy_ignore_client_abort 是關閉的,此時在請求過程中如果客戶端端主動關閉請求或者客戶端網(wǎng)絡斷掉,那么 Nginx 會記錄 499,同時 request_time 是「后端已經(jīng)處理」的時間,而upstream_response_time 為“-“ (已驗證)。
如果使用了 proxy_ignore_client_abort on ;
那么客戶端主動斷掉連接之后,Nginx 會等待后端處理完(或者**時),然后記錄「后端的返回信息」到日志。所以,如果后端返回 200,就記錄 200 ;如果后端放回 5XX ,那么就記錄 5XX 。
如果**時(默認60s,可以用 proxy_read_timeout 設置),Nginx 會主動斷開連接,記錄 504
注:只在做反向代理的時候加入,作為其他服務器的時候,關閉為好,默認設置是關閉的!
?著作權歸作者所有:來自51CTO博客作者ssp4599815的原創(chuàng)作品
詞條
詞條說明
1、三星性能:5價格:1品牌:5售后:5三星是半導體存儲產(chǎn)業(yè)的*代表,在固態(tài)硬盤方面,三星能夠自研主控和閃存,性能也不錯,市場份額一直很高,但是三星的固態(tài)硬盤價格也是所有品牌中較高的,性價比很低。2、Intel性能:4價格:2品牌:5售后:5Intel的售價也不低,但是比三星算是低了一點,在消費級產(chǎn)品上,Intel的固態(tài)硬盤性能一向很高,售后服務也不錯。如果注重數(shù)據(jù)的安全和固態(tài)硬盤的穩(wěn)定性的話,
思科UCSC-DBUN-C240-311價格是多少_思科UCSC-DBUN-C240-311怎么樣
產(chǎn)品類型:機架式產(chǎn)品結構:2UCPU型號:Intel Xeon E5-2609 CPU主頻:2.4GHz標配CPU數(shù)目:1個內存類型:DDR3查看詳細參數(shù)>>思科UCSC-DBUN-C240-311運行安全、穩(wěn)定,管理能力便捷。7x24小時不間斷提供可靠的服務,遠離宕機、病毒等不安全因素。思科UCSC-DBUN-C240-311是服務器領域的優(yōu)質產(chǎn)品,不是簡單的拼湊參數(shù),而是關注用戶的
浪潮NF5270M4(E5-2609v3/8G/1TB)價格是多少_浪潮NF5270M4(E5-2609v3/8G/1TB)怎么樣
CPU系列:Intel,至強處理器E5系列CPU型號:Intel 至強E5-2609 v3CPU主頻:1.9GHz內存類型:RDIMM DDR4標配內存:8G硬盤接口類型:SATA,3.5“(企業(yè)級)查看詳細參數(shù)>>這款浪潮NF5270M4(E5-2609v3/8G/1TB)是一款性能很穩(wěn)定的服務器,能夠積極響應服務請求并進行處理,處理能力、穩(wěn)定性、可靠性、安全性、可擴展性、可管理性等
故障描述: 電腦在使用過程中,突然局部失去響應,如可以打開“我的電腦”,但是無法打開視頻文件,等等,從開始菜單重啟后,一直停留在“正在關機”的界面。 按重啟鍵后,硬件自檢通過,發(fā)出清脆的“嘀”的一聲,然后顯示器開始有信號輸出,然后到了“正在啟動Windows”界面后停止不前(從按下重啟鍵到出現(xiàn)此見面,明顯不太正常,比正常情況下慢了許多,特別是**次重啟,較慢)。 從光盤啟動,選擇進入PE系統(tǒng),快到
公司名: 深圳道通存儲技術有限公司
聯(lián)系人: 趙先生
電 話:
手 機: 18681551725
微 信: 18681551725
地 址: 廣東深圳福田區(qū)
郵 編:
網(wǎng) 址: dtstor.b2b168.com
杭州網(wǎng)絡儲存器等級劃分標準 深圳道通存儲技術有限公司
聯(lián)想 SAS服務器硬盤代理經(jīng)銷商 深圳道通存儲技術有限公司
長春idc機房的分類標準 深圳道通存儲技術有限公司
思科900G SAS服務器固態(tài)硬盤代理經(jīng)銷商 深圳道通存儲技術有限公司
IBM 14T SAS服務器硬盤代理經(jīng)銷商 深圳道通存儲技術有限公司
聯(lián)想8T SAS服務器固態(tài)硬盤批發(fā)采購渠道 深圳道通存儲技術有限公司
蒙古idc機房運維需要掌握的只是 深圳道通存儲技術有限公司
廣州分布式存儲機房規(guī)模排行榜 深圳道通存儲技術有限公司
公司名: 深圳道通存儲技術有限公司
聯(lián)系人: 趙先生
手 機: 18681551725
電 話:
地 址: 廣東深圳福田區(qū)
郵 編:
網(wǎng) 址: dtstor.b2b168.com
¥48.00
mediDVR 便攜式高清醫(yī)療錄像機 3042040
¥7800.00
¥500.00