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错误解决方案相关推荐

  1. 504服务器无响应,什么是504网关超时错误(以及如何解决)? | MOS86

    当试图加载网页的服务器没有及时从另一台服务器获得响应时,就会发生504网关超时错误.几乎总是错误是在网站本身上,您无能为力. 但请稍后再试. 不过,您可以尝试一些快速操作. 504网关超时错误表示尝试 ...

  2. Nginx报504 gateway timeout错误的解决方法

    提供给客户的bs软件,有一个导出报表的功能,经常性的报504错误 最近在工作中,需要做Excel导入的功能,由于Excel的数据比较多,而且我们的服务端程序需要对数据的内容做校验,会调用很多的外部服务 ...

  3. mysql语句报错1403_GoldenGate SQL error 1403 mapping 错误解决方案

    GoldenGate SQL error 1403 mapping 错误解决方案 故障现象: 2011-09-06 15:45:29 WARNING OGG-01004 Oracle GoldenGa ...

  4. HTTP 499 状态码 nginx下 499错误

    日志记录中HTTP状态码出现499错误有多种情况,我遇到的一种情况是nginx反代到一个永远打不开的后端,就这样了,日志状态记录是499.发送字节数是0. 老是有用户反映网站系统时好时坏,因为线上的产 ...

  5. push to origin/master was rejected错误解决方案(IDEA)

    push to origin/master was rejected错误解决方案(IDEA) 参考文章: (1)push to origin/master was rejected错误解决方案(IDE ...

  6. The database returned no natively generated identity value错误解决方案

    The database returned no natively generated identity value错误解决方案 参考文章: (1)The database returned no n ...

  7. Linux 部署ftp报530 错误解决方案

    Linux 部署ftp报530 错误解决方案 参考文章: (1)Linux 部署ftp报530 错误解决方案 (2)https://www.cnblogs.com/austinspark-jessyl ...

  8. 安装node-sass时出现的错误解决方案(Mac自用,也可以借鉴)

    安装node-sass时出现的错误解决方案(Mac自用,也可以借鉴) 参考文章: (1)安装node-sass时出现的错误解决方案(Mac自用,也可以借鉴) (2)https://www.cnblog ...

  9. 【爬坑】在 IDEA 中运行 Hadoop 程序 报 winutils.exe 不存在错误解决方案

    [爬坑]在 IDEA 中运行 Hadoop 程序 报 winutils.exe 不存在错误解决方案 参考文章: (1)[爬坑]在 IDEA 中运行 Hadoop 程序 报 winutils.exe 不 ...

最新文章

  1. 读《世界是数字的》有感 15级软工4班 李苏娴
  2. 2017-2018-1 20155231 《信息安全系统设计基础》第6周学习总结
  3. python 爱心文字墙_python奇技淫巧 | nMask's Blog
  4. java.lang.Class.isPrimitive()用法解析
  5. 201409-2-画图
  6. 运维工程师姓什么很重要!请别叫我“X工”
  7. Atitit 文件上传功能的实现 图片 视频 目录 1. 上传原理 1 1.1. http post编码 multipart / form-data 1 1.2. 临时文件模式 最简单 2 1.3
  8. Python新闻网站项目-9.Django前端HTML功能
  9. 土豆视频ipad 5.0 客户端
  10. 基于Matlab的极限学习机(ELM)实现
  11. 欧姆龙多PLC串行链接模式的应用
  12. PCB多层板每层厚度及材质
  13. arm64 中的__virt_to_phys
  14. 兄dei,作为程序员的你,这些一直接触的词都念对了吗?
  15. 基于Vue+Express+Mysql开发的手机端电影购票系统(附源码)
  16. Y05 - 999、Python - 风变编程
  17. matlab中linspace的用法,matlab中的一些基本使用方法(持续添加)
  18. 【初学者】SDK的理解(客户端SDK和服务器端SDK)
  19. 为什么选独立服务器?
  20. 云周刊】第177期:马云见证!蚂蚁金服推出全球首个区块链跨境汇款服务

热门文章

  1. Source insight 支持汇编
  2. Delphi中DLL或Package窗体载入与显示
  3. 11款有用的Web开发在线工具
  4. 对list字段属性的部分修改的application
  5. 26.python常用端口号
  6. ubuntu 安装 mongodb并修改仓库路径
  7. 大数据在2017年发展的8个预测
  8. 中国计算机考试区别及求职的相关思考
  9. 我国物联网环境尚未成熟 传感器面临机遇
  10. 关于 paddingFactor 及 COLLMOD 的设置值