首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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...这下就很清楚了,这是nginx定义的一个状态码,用于表示这样的错误:服务器返回http头之前,客户端就提前关闭了http连接。...upstream在以下几种情况下会返回499: (1)upstream 在收到读写事件处理之前时,会检查连接是否可用:ngx_http_upstream_check_broken_connection,...(2)server处理请求未结束,而client提前关闭了连接,此时也会返回499。 (3)在一个upstream出错,执行next_upstream时也会判断连接是否可用,不可用则返回499

1.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Nginx的 HTTP 499 状态码处理

    1、前言   今天在处理一个客户问题,遇到Nginx access log中出现大量的499状态码。...测试nginx发现如果两次提交post过快就会出现499的情况,看来是nginx认为是不安全的连接,主动拒绝了客户端的连接....499nginx的Web服务器软件扩展的4xx错误,只是用于记录的目的,没有实际的响应。Nginx 499代表服务端请求还未返回时客户端主动断开连接; 还有一种情况就是有人攻击,故意消耗服务端资源。...这个事情交给 php-fpm 自己来处理其实挺合适。因为 PHP 默认当用户断开请求了会中断请求,如果不想自动中断请求,使用 ignore_user_abort() 就好了。...方法/步骤2: 尽管NGINX配置了,但60秒后HTTP499错误。Nginx上的超时都设置了很大的值(远远超过60秒)。这可能是云服务器设置问题,以AWS为例。

    11.3K20

    Nginx+PHP(laravel) 环境 499 错误码排查过程小记

    过程 0x01 经搜索得知: 哪些情况下会使 Nginx 返回 HTTP CODE 499? 首先,这个问题百度谷歌应该都能搜到。...在nginx源码中,499对应的定义是 “client has closed connection”。这很有可能是因为服务器端处理的时间过长,客户端“不耐烦”了。...: PHP 进程「死」了。...0x02 这里的死,不一定是进程结束,也有可能是僵尸,或是陷入死循环,一直在执行某个脚本…… 若是逐个检查代码时间来不及(以先解决问题为重),遂排查: Nginx+FastCGI 到底是谁影响超时时间...以及: PHP-max_execution_time 与 fpm.request_terminate_timeout 介绍 0x03 经过上面的调整,大约一周后再次维护服务器。

    1.3K20

    我是这么学习nginx 499

    点击上方“码农沉思录”,选择“设为星标” 优质文章,及时送达 概要 这篇文章从nginx499着手,分析整个过程中是怎么产生499行为的,以及各种往返网络包出现的原因。...我轻描淡写的回复了就是客户端设置的超时时间到了,nginx自己记录的内部错误码。这样草草打发之后,我的内心久久不能平复,499的背后nginx和客户端以及upstream到底发什么了什么,不得而知。...接着我去查了nginx499对定义,只说明了这是client关闭连接的code,没有其他更深入的信息。...实验 os: mac 服务: golang+nginx+(php)fpm 操作: golang作为client,发起http调用,设置1秒超时,php对应接口sleep 3秒之后响应,nginx作为反向代理...php脚本处理完之后,马上会执行shutdown来关闭socket的写入通道,很合理,毕竟逻辑已经处理完了,不需要再向nginx返回数据了。

    2K21

    499问题思考

    499状态码解释: Nginx499状态码的定义是 client has closed connection,也就是客户端断开了连接。...一般发生499的有几种原因: 1.客户端觉得服务端太慢了,主动断开了,这个时候客户端设置了链接超时时间 2.在客户端操作有时候,关闭了页面和取消了请求。...如果真的是接口性能问题,这个还好解决,如果超时时间超过了客户端设置的超时时间,偶发的499问题?我们该怎么排查。...ngx.req.start_time这个参数不是标准的Nginx内置参数,ngx_http_lua_module - 嵌入强有力的 Lua 到 Nginx HTTP 服务中。...该模块不是随着 Nginx 源码发行。 有了这么多重要的时间参数和全链路追踪ID,发现一个奇怪的现象,就是API网关和上游服务建立连接时间比较久,导致触发超时时间然后返回499

    30310

    Nginx自定义状态码499出现原因

    499状态码定义 维基百科的定义 499 Client Closed Request (Nginx) Used in Nginx logs to indicate when the connection...while the server is still processing itsrequest, making server unable to send a status code back 499...状态码是nginx自定义的状态码,不是标准的状态码,在官网的定义是Client Closed Request,也即客户端关闭了请求连接,原因大部分是因为接口响应太久了,客户端设置了超时时间,直接关闭了请求连接...会认为不安全,这种情况会直接返回499状态码,保护系统安全 如果系统需要记录后端响应日志,可以设置proxy_ignore_client_abort参数设置为on,开启后,后端接口超过了客户端的响应时间...,后端接口会继续执行,日志也会记录到nginx里,不过这种做法会在一定程度上造成nginx的资源使用,需要根据实践情况使用,如果为了系统安全,建议还是不开启 location =/api {

    82600

    一边制造,一边讲解http状态码502|504|499|500

    499产生的原因也常常会和504会有内在的关联,你都了解吗?本文不光制造它们,而且会循序渐进,在对比之中制造它们。 复现环境说明 系统环境和软件环境为:Linux,Nginxphp-fpm。...是指一次http请求在客户端指定的时间内没有返回响应,此时,客户端会主动断开连接,此时表象为客户端无响应返回,而nginx的日志中会status code 为499。...milliseconds with 0 bytes received nginx的access日志的code为499,如下: "HEAD /hello.php HTTP/1.1" 499 0 500...> 由于php代码语法错误,php-fpm执行失败,然后告诉nginx这一结果,nginx则返回500。.../webroot/hello.php on line 3 总结 499是由于超过客户端设置的请求超时时间,客户端主动关闭连接,服务器code为499

    8.9K61

    nginx php apache php 对比,Apache和nginx的比较「建议收藏」

    nginx 相对 apache 的优点: ● 轻量级,同样起web 服务,比apache 占用更少的内存及资源 ● 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx...能保持低资源低消耗高性能 ● 高度模块化的设计,编写模块相对简单 ● 社区活跃,各种高性能模块出品迅速啊 ● Nginx支持更多的并发连接,能够支持高达50000个并发连接数的相应 ● 能在不间断服务的情况下进行版本升级...,能做到不间断运行(7*24) ● 对静态处理性能高于apache apache 相对nginx 的优点: ● rewrite ,比 nginx 的 rewrite 强大 ● 模块超多,基本想到的都可以找到...● 少bug ,nginx 的bug 相对较多,apache拥有更成熟的技术和开发社区 ● 对动态处理性能高于nginx 两者最核心的区别在于: apache是同步多进程模型,一个连接对应一个进程;nginx

    1.6K20

    编译PHP并与Nginx整合

    Nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。...Nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被Nginx。...多数流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等。同时,FastCGI也被许多脚本语言支持,其中就有PHP。...2、Nginx+FastCGI运行原理  Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。...再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据(html页面或者图片)发送给客户端。

    68720
    领券