服務(wù)器nginx 499錯誤的解決班有哪些,你知道么?

    問題描述:

    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)作品


    深圳道通存儲技術(shù)有限公司專注于服務(wù)器硬盤批發(fā)價格,顯卡內(nèi)存條代理經(jīng)銷商,挖礦SSD硬盤進貨渠道等

  • 詞條

    詞條說明

  • 淘寶上**便宜的硬盤,是怎么回事,你敢買么?

    淘寶上**便宜的“監(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ù)器托管和租用的區(qū)別在哪里,有什么不同?

    服務(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ì)保方面.托管是用戶自己提供的機器,所以機器硬件歸用戶所有,

聯(lián)系方式 聯(lián)系我時,請告知來自八方資源網(wǎng)!

公司名: 深圳道通存儲技術(shù)有限公司

聯(lián)系人: 趙先生

電 話:

手 機: 18681551725

微 信: 18681551725

地 址: 廣東深圳福田區(qū)

郵 編:

網(wǎng) 址: dtstor.b2b168.com

八方資源網(wǎng)提醒您:
1、本信息由八方資源網(wǎng)用戶發(fā)布,八方資源網(wǎng)不介入任何交易過程,請自行甄別其真實性及合法性;
2、跟進信息之前,請仔細核驗對方資質(zhì),所有預(yù)付定金或付款至個人賬戶的行為,均存在詐騙風(fēng)險,請?zhí)岣呔瑁?
    聯(lián)系方式

公司名: 深圳道通存儲技術(shù)有限公司

聯(lián)系人: 趙先生

手 機: 18681551725

電 話:

地 址: 廣東深圳福田區(qū)

郵 編:

網(wǎng) 址: dtstor.b2b168.com

    相關(guān)企業(yè)
    商家產(chǎn)品系列
  • 產(chǎn)品推薦
  • 資訊推薦
關(guān)于八方 | 八方幣 | 招商合作 | 網(wǎng)站地圖 | 免費注冊 | 一元廣告 | 友情鏈接 | 聯(lián)系我們 | 八方業(yè)務(wù)| 匯款方式 | 商務(wù)洽談室 | 投訴舉報
粵ICP備10089450號-8 - 經(jīng)營許可證編號:粵B2-20130562 軟件企業(yè)認定:深R-2013-2017 軟件產(chǎn)品登記:深DGY-2013-3594
著作權(quán)登記:2013SR134025
Copyright ? 2004 - 2024 b2b168.com All Rights Reserved