阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Nginx 499错误解决方法

151次阅读
没有评论

共计 2185 个字符,预计需要花费 6 分钟才能阅读完成。

半夜还在维护服务器!公司有一定的基础用户量,春节期间用户量暴增,导致服务器鸭梨山大报警了!没办法,这些都是应该经历的。下面就总结一下 nginx 的一些问题,希望以后不要再犯同样的错误。

  • 499 错误

官方解释:

ngx_string(ngx_http_error_495_page), /* 495, https certificate error*/
ngx_string(ngx_http_error_496_page), /* 496, https no certificate */
ngx_string(ngx_http_error_497_page), /* 497, http to https */
ngx_string(ngx_http_error_404_page), /* 498, canceled */
ngx_null_string,                    /* 499, client has closed connection */

499,客户端关闭连接,这个状态码并不是 http 协议中定义的 status code,而是 nginx 自己定义的一个状态码。由于服务器处理请求较多,客户端在有效时间内没有得到答复,主动关闭了连接。有人说把时间设置长一些或者使用 proxy_ignore_client_abort on(让代理服务端不要主动关闭客户端的连接)。但是这样也有一定的风险,会拖垮服务器。发生这个错误,如果服务器 CPU 和内存不算太高,一般是数据库和程序的问题,数据库处理较慢或者程序线程较低。结合情况调整,比如读写分离或者程序线程数调高。

  • recv() failed (104: Connection reset by peer) while reading response header from upstream

程序执行太久而被终止,在代理处添加 fail_timeout 和 max_fails,加在代理服务的后面。这 2 个参数一起配合,来控制 nginx 怎样认为 upstream 中的某个 server 是失效的。当在 fail_timeout 的时间内,某个 server 连接失败了 max_fails 次,则 nginx 会认为该 server 不工作了。同时,在接下来的 fail_timeout 时间内,nginx 不再将请求分发给失效的 server。如果不设置这 2 个参数,fail_timeout 默认为 10s,max_fails 默认为 1。就是说,只要某个 server 失效一次,则在接下来的 10s 内,就不会分发请求到该 server 上。为了避免因为意外原因导致的错误判断,所以要根据实际并发情况填写合理的值。max_fails= 0 则表示不做判断,即使有多次失败请求,后面的请求也会继续发给它处理。

  • accept() failed (24: Too many open files)

打开文件数太多,受到限制。ulimit -n, 查看 Linux 可打开文件总数。解决这个问题,把 worker_rlimit_nofile 和 worker_connections 设置高一些就好了。worker_rlimit_nofile 更改 worker 进程的最大打开文件数限制,worker_connections 设置可由一个 worker 进程同时打开的最大连接数。最大客户数也由系统的可用 socket 连接数限制(~ 64K),所以设置不切实际的高没什么好处。注意 worker_connections 不要超过 worker_rlimit_nofile。

CentOS 7.2 下编译安装 PHP7.0.10+MySQL5.7.14+Nginx1.10.1  http://www.linuxidc.com/Linux/2016-09/134804.htm

搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm

Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

Nginx 的 500,502,504 错误解决方法 http://www.linuxidc.com/Linux/2015-03/115507.htm

CentOS 7 编译安装 Nginx1.10.2 脚本启动失败解决思路 http://www.linuxidc.com/Linux/2017-01/139794.htm

Nginx 的详细介绍 :请点这里
Nginx 的下载地址 :请点这里

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-01/140055.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2185字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中