nginx 499返回码

今天发现nginx有不少的499错误,大约占了将近0.5%,而且是在新上线了一个含upstream的业务之后。

 

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

 

grep下“NGX_HTTP_CLIENT_CLOSED_REQUEST”,发现目前这个状态值只在ngx_upstream中赋值。

 

upstream在以下几种情况下会返回499

 

1upstream 在收到读写事件处理之前时,会检查连接是否可用:ngx_http_upstream_check_broken_connection

 

if (c->error) { //connecttion错误

……

        if (!u->cacheable) { //upstreamcacheablefalse,这个值跟http_cache模块的设置有关。指示内容是否缓存。

            ngx_http_upstream_finalize_request(r, u, NGX_HTTP_CLIENT_CLOSED_REQUEST);

        }

}

如上代码,当连接错误时会返回499

 

2server处理请求未结束,而client提前关闭了连接,此时也会返回499

 

3)在一个upstream出错,执行next_upstream时也会判断连接是否可用,不可用则返回499

 

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


文章出自http://www.itnose.net/news/160/6280560

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值