服务器nginx 499错误的解决班有哪些,你知道么?

    问题描述:

    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出现的原因


    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定义的一个状态码,用于表示这样的错误:服务器返回http头之前,客户端就提前关闭了http连接

    继续grep :



    这很有可能是因为服务器端处理的时间过长,客户端“不耐烦”了。

    要解决此问题,就需要在程序上面做些优化了。

    再grep下“NGX_HTTP_CLIENT_CLOSED_REQUEST”,发现目前这个状态值只在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出错,执行next_upstream时也会判断连接是否可用,不可用则返回499。

    总之,这个错误的比例升高可能表明服务器upstream处理过慢,导致用户提前关闭连接。而正常情况下有一个小比例是正常的。

    继续分析:

    问题的核心就是要排查为什么服务端处理时间过长

    可能问题:

    1 后台python程序处理请求时间过长

    2 mysql慢查询

    通过查看监控:

    1 cpu和内存的使用,都在正常范围

    2 后台程序访问正常

    3 MySQL没有慢查询

    结果:

    经过询问**后得知,这个nginx为查询违章的api,用户提交查询后, python就去数据库或者交通局的网站查询。这个查询会有消耗一定的时间,所以,用户会主动断开连接

    解决问题:

    proxy_ignore_client_abort on; #让代理服务端不要主动关闭客户端的连接。

    默认 proxy_ignore_client_abort 是关闭的,此时在请求过程中如果客户端端主动关闭请求或者客户端网络断掉,那么 Nginx 会记录 499,同时 request_time 是「后端已经处理」的时间,而upstream_response_time 为“-“ (已验证)。

    如果使用了 proxy_ignore_client_abort on ;

    那么客户端主动断掉连接之后,Nginx 会等待后端处理完(或者**时),然后记录「后端的返回信息」到日志。所以,如果后端返回 200,就记录 200 ;如果后端放回 5XX ,那么就记录 5XX 。

    如果**时(默认60s,可以用 proxy_read_timeout 设置),Nginx 会主动断开连接,记录 504

    注:只在做反向代理的时候加入,作为其他服务器的时候,关闭为好,默认设置是关闭的!

    ©着作权归作者所有:来自51CTO博客作者ssp4599815的原创作品


    深圳道通存储技术有限公司专注于服务器硬盘批发价格,显卡内存条代理经销商,挖矿SSD硬盘进货渠道等

  • 词条

    词条说明

  • 华为RH5885H V3价格是多少_华为RH5885H V3怎么样

    CPU系列:Intel,至强处理器E7系列CPU型号:Intel Xeon E7-4820 V2CPU主频:2.0GHz标配内存:128G硬盘接口类型:SAS标配硬盘:900G华为RH5885H V3运行安全、稳定,管理能力便捷。7x24小时不间断提供可靠的服务,远离宕机、病毒等不安全因素。华为RH5885H V3是服务器领域的优质产品,不是简单的拼凑参数,而是关注用户的本质需求,提供优良的性能和

  • 如何自己做网站 这些要素和步骤要知晓

    很多人想要自己做网站,但是网站建设并不是简单的事情。对于新手来说,如何自己做网站呢?首先我们要清楚做网站的三个要素,分别是域名、空间和网站程序。只有完成了这三要素的建设,才能够把自己的网站发布到互联网上供用户访问。 建站三要素 如何自己做网站?建站的三要素是缺一不文章博客织梦模板_新闻资讯dede模板_织梦文章站可的,域名是网站的标识,别人输入域名就能够访问你的网站。所以域名一定要选择简单好记的

  • 希捷硬盘的寿命多久,企业级250万小时

    硬盘一般可以无故障使用多少小时?硬盘的理论寿命可以达到3万小时以上。如果硬盘24小时持续工作,不到3年就会趴窝。正常使用5-10年也不会坏,但是硬盘性能会越来越差。而硬盘的实际使用寿命是根据数据读写的多少来看的,一般情况下,硬盘读写次数越多,寿命也就越短。硬盘的工作是属于精密机械一类的,里面有硬盘盘片、带动盘片转到的电机、磁头、磁头伺服电机,这些都属于机械装置,是会磨损的。特别是磁头和磁头伺服电机

  • Mini PC相继问世,前途可谓一片光明!

    去年Intel发布会上说将会发布一款让人惊讶的小主机,U盘小主机,没想到今年这款U盘大小的**MiniPC就问世了,真的只有和U盘大小,带给我们惊讶的同时,也给我们带来了质疑的眼神,毕竟电脑这东西,越小散热性能怎么都会没那么好,再加上面对新东西的接受能力没有那么强,连普通的小主机都觉得不靠谱,更何况是U盘大小的主机了,不过既然是Intel出的,这说服力要比其它厂商高很多。 不只是Intel在搞小Mi

联系方式 联系我时,请告知来自八方资源网!

公司名: 深圳道通存储技术有限公司

联系人: 赵先生

电 话:

手 机: 18681551725

微 信: 18681551725

地 址: 广东深圳福田区

邮 编:

网 址: dtstor.b2b168.com

八方资源网提醒您:
1、本信息由八方资源网用户发布,八方资源网不介入任何交易过程,请自行甄别其真实性及合法性;
2、跟进信息之前,请仔细核验对方资质,所有预付定金或付款至个人账户的行为,均存在诈骗风险,请提高警惕!
    联系方式

公司名: 深圳道通存储技术有限公司

联系人: 赵先生

手 机: 18681551725

电 话:

地 址: 广东深圳福田区

邮 编:

网 址: dtstor.b2b168.com

    相关企业
    商家产品系列
  • 产品推荐
  • 资讯推荐
关于八方 | 八方币 | 招商合作 | 网站地图 | 免费注册 | 一元广告 | 友情链接 | 联系我们 | 八方业务| 汇款方式 | 商务洽谈室 | 投诉举报
粤ICP备10089450号-8 - 经营许可证编号:粤B2-20130562 软件企业认定:深R-2013-2017 软件产品登记:深DGY-2013-3594
著作权登记:2013SR134025
Copyright © 2004 - 2025 b2b168.com All Rights Reserved