Nginx502,504和499错误解决方案
499错误解决方案
499错误是什么?让我们看看NGINX的源码中的定义:
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对应的是 “client has closed connection”。这很有可能是因为服务器端处理的时间过长,客户端“不耐烦”了。
确实是 “客户端关闭了连接”, 或者说 “连接超时” , 无论你设置多少超时时间都没用 原来是php进程不够用了改善一下php进程数问题解决默认测试环境才开5个子进程
502和504错误解决方案
一、错误提示说明:
Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止。
Nginx 504 Gateway Time-out的含义是所请求的网关没有及时收到响应
二、错误提示原因分析:
解决这两个问题其实是需要综合思考的,一般来说Nginx 502 Bad Gateway和php-fpm.conf的设置有关,
而Nginx 504 Gateway Time-out则是与nginx.conf的设置有关。
php-fpm.conf有两个至关重要的参数,一个是”max_children”,另一个是”request_terminate_timeout” ,但是这个值不是通用的,而是需要自己计算的。
计算的方式如下:
如果你的服务器性能足够好,且宽带资源足够充足,PHP脚本没有系循环或BUG的话你可以 直接将”request_terminate_timeout”设置成0s。0s的含义是让PHP-CGI一直执行下去而没有时间限制。而如果你做不到这 一点,也就是说你的PHP-CGI可能出现某个BUG,或者你的宽带不够充足或者其他的原因导致你的PHP-CGI能够假死那么就建议你 给”request_terminate_timeout”赋一个值,这个值可以根据你服务器的性能进行设定。一般来说性能越好你可以设置越高,20分钟 -30分钟都可以。由于我的服务器PHP脚本需要长时间运行,有的可能会超过10分钟因此我设置了900秒,这样不会导致PHP-CGI死掉而出现502 Bad gateway这个错误。
而”max_children”这个值又是怎么计算出来的呢?这个值原则上是越大越好,php-cgi的进程多了就会处理的很快,排队的请求就会很少。设置”max_children”也需要根据服务器的性能进行设定,一般来说一台服务 器正常情况下每一个php-cgi所耗费的内存在20M左右,因此我的”max_children”我设置成40个,20M*40=800M也就是说在峰 值的时候所有PHP-CGI所耗内存在800M以内,低于我的有效内存1Gb。而如果我的”max_children”设置的较小,比如5-10个,那么 php-cgi就会“很累”,处理速度也很慢,等待的时间也较长。如果长时间没有得到处理的请求就会出现504 Gateway Time-out这个错误,而正在处理的很累的那几个php-cgi如果遇到了问题就会出现502 Bad gateway这个错误。
三、临时解决办法:
综上所述,Nginx提示502和504错误的临时解决办法是:
1、调整php-fpm.conf的相关设置:
max_children 32;
request_terminate_timeout 30s;
request_terminate_timeout设置单个请求的超时终止时间。还应该注意到php.ini中的max_execution_time参数。当请求终止时,也会出现502错误的。
2、调整nginx.conf的相关设置:
fastcgi_connect_timeout 600;
fastcgi_send_timeout 600;
fastcgi_read_timeout 600;
fastcgi_buffer_size 256k;
fastcgi_buffers 16 256k;
fastcgi_busy_buffers_size 512k;
fastcgi_temp_file_write_size 512k;
四、终级解决方案:
标题3中所示的解决方案只能临时解决问题,而如果网站的访问量确实非常非常大,而Nginx+FastCGI只能对处理瞬间或短时间内的高并发有很好的效果,所以目前唯一的终极解决方案是:定时平滑重启php-cgi。
具体配置如下:
1、写一个非常简单的脚本:
#vi /home/www/scripts/php-fpm.sh
内容如下:
#!/bin/bash
# This script run at */1
/usr/local/php/sbin/php-fpm reload
2、将脚本添加至计划任务:
#crontab -e
内容如下:
*/1 * * * * /home/www/scripts/php-fpm.sh
注:为了省事起见,也可以不写脚本,直接在crontab里写入php-fpm的平滑重启命令。
转载于:https://www.cnblogs.com/phpfans/p/4641558.html
Nginx502,504和499错误解决方案相关推荐
- 504服务器无响应,什么是504网关超时错误(以及如何解决)? | MOS86
当试图加载网页的服务器没有及时从另一台服务器获得响应时,就会发生504网关超时错误.几乎总是错误是在网站本身上,您无能为力. 但请稍后再试. 不过,您可以尝试一些快速操作. 504网关超时错误表示尝试 ...
- Nginx报504 gateway timeout错误的解决方法
提供给客户的bs软件,有一个导出报表的功能,经常性的报504错误 最近在工作中,需要做Excel导入的功能,由于Excel的数据比较多,而且我们的服务端程序需要对数据的内容做校验,会调用很多的外部服务 ...
- mysql语句报错1403_GoldenGate SQL error 1403 mapping 错误解决方案
GoldenGate SQL error 1403 mapping 错误解决方案 故障现象: 2011-09-06 15:45:29 WARNING OGG-01004 Oracle GoldenGa ...
- HTTP 499 状态码 nginx下 499错误
日志记录中HTTP状态码出现499错误有多种情况,我遇到的一种情况是nginx反代到一个永远打不开的后端,就这样了,日志状态记录是499.发送字节数是0. 老是有用户反映网站系统时好时坏,因为线上的产 ...
- push to origin/master was rejected错误解决方案(IDEA)
push to origin/master was rejected错误解决方案(IDEA) 参考文章: (1)push to origin/master was rejected错误解决方案(IDE ...
- The database returned no natively generated identity value错误解决方案
The database returned no natively generated identity value错误解决方案 参考文章: (1)The database returned no n ...
- Linux 部署ftp报530 错误解决方案
Linux 部署ftp报530 错误解决方案 参考文章: (1)Linux 部署ftp报530 错误解决方案 (2)https://www.cnblogs.com/austinspark-jessyl ...
- 安装node-sass时出现的错误解决方案(Mac自用,也可以借鉴)
安装node-sass时出现的错误解决方案(Mac自用,也可以借鉴) 参考文章: (1)安装node-sass时出现的错误解决方案(Mac自用,也可以借鉴) (2)https://www.cnblog ...
- 【爬坑】在 IDEA 中运行 Hadoop 程序 报 winutils.exe 不存在错误解决方案
[爬坑]在 IDEA 中运行 Hadoop 程序 报 winutils.exe 不存在错误解决方案 参考文章: (1)[爬坑]在 IDEA 中运行 Hadoop 程序 报 winutils.exe 不 ...
最新文章
- 读《世界是数字的》有感 15级软工4班 李苏娴
- 2017-2018-1 20155231 《信息安全系统设计基础》第6周学习总结
- python 爱心文字墙_python奇技淫巧 | nMask's Blog
- java.lang.Class.isPrimitive()用法解析
- 201409-2-画图
- 运维工程师姓什么很重要!请别叫我“X工”
- Atitit 文件上传功能的实现 图片 视频 目录 1. 上传原理	1 1.1. http post编码 multipart / form-data	1 1.2. 临时文件模式 最简单	2 1.3
- Python新闻网站项目-9.Django前端HTML功能
- 土豆视频ipad 5.0 客户端
- 基于Matlab的极限学习机(ELM)实现
- 欧姆龙多PLC串行链接模式的应用
- PCB多层板每层厚度及材质
- arm64 中的__virt_to_phys
- 兄dei,作为程序员的你,这些一直接触的词都念对了吗?
- 基于Vue+Express+Mysql开发的手机端电影购票系统(附源码)
- Y05 - 999、Python - 风变编程
- matlab中linspace的用法,matlab中的一些基本使用方法(持续添加)
- 【初学者】SDK的理解(客户端SDK和服务器端SDK)
- 为什么选独立服务器?
- 云周刊】第177期:马云见证!蚂蚁金服推出全球首个区块链跨境汇款服务