资讯专栏INFORMATION COLUMN

nginx499错误

FreeZinG / 2487人阅读

摘要:今天发现有不少的错误,大约占了将近,而且是在新上线了一个含的业务之后。总之,这个错误的比例升高可能表明服务器处理过慢,导致用户提前关闭连接。而正常情况下有一个小比例是正常的。

今天发现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:

(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处理过慢,导致用户提前关闭连接。而正常情况下有一个小比例是正常的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39151.html

相关文章

  • 聊聊nginx报错499问题

    摘要:序本文主要来聊一下的当中出现的问题。问题描述原因服务器返回头之前,客户端就提前关闭了连接,常见于后台接口处理时间比较长,而前端请求又自带有超时时间。复现请求实例带超时时间请求后台接口关于如下实例服务器排障之错误的解决 序 本文主要来聊一下nginx的access log当中出现的499问题。 问题描述 499 CLIENT CLOSED REQUEST A non-standard s...

    妤锋シ 评论0 收藏0
  • 【PHP问题定位】php-fpm的idle掉底分析

    摘要:周三晚加上了对阿波罗超时的监控,周四观察上线期间阿波罗超时指标的变化,时间也吻合。月日下午又报了一次警与此同时的阿波罗超时监控这里同时列出机器指标的目的是为了说明,尽管没有报警,但机器的指标变化和是统一的。 顺风车运营研发团队 熊浩含 问题现象 线上报警群里时而有php-fpm-idle的零星报警,持续时间很短(几秒甚至一秒),见下图 showImg(https://segmentf...

    zhangfaliang 评论0 收藏0
  • 基于Lua+Kafka+Heka的Nginx Log实时监控系统

    摘要:目的错误码告警和超时告警超时告警数据分析关于错误和超时监控有一点要考虑的是收到告警时,要能够快速知道是哪个后端服务节点出现了问题。关于消息队列的选择,前面已经提到我们已有集群就直接拿来用了。 背景 在我们的系统架构中,Nginx作为所有HTTP请求的入口,是非常重要的一层。每天产生大量的Nginx Access Log,闲置在硬盘上实在是太浪费资源了。所以,能不能把Nginx日志利用起...

    Loong_T 评论0 收藏0
  • 坑系列之阿里SLB上使用Webscoket

    摘要:最终获得一个链接,里面有这样的描述如何在阿里云负载均衡上启用支持无需配置,当选用监听时,默认支持无加密版本协议协议当选择监听时,默认支持加密版本的协议协议。详细参见如何使用负载均衡性能保障型实例。 Websocket是HTML5之后的一个新事物,可以方便的实现客户端到服务端的长会话,特别适合用于客户端需要接收服务端推送的场景。例如在线客服聊天,提醒推送等等。改变了以往客户端只能通过轮询...

    1treeS 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<