php-fpm和php以及Nginx的timeout超时时间的设置

最近工作中在做网站配置时有时间遇到了网站出现的错误页面,最常见的如下

403 – Forbidden

1.如果网站出现了错误403 forbidden一般是nginx的服务器屏蔽了客户端的浏览器访问。对你的设备或者IP或者URL各种的限制,是不允许你进行访问。 这是出于某种原因禁止访问的。

Web服务器认为客户端(例如,Web浏览器或我们的设备)发送的HTTP数据流正确,但是出于某些原因,禁止访问URL标识的资源,就会出现了403的错误页面。

解决办法:

404 – Not Found

2.如果网站出现了404则是域名是有效的但是你访问的url则是无效的,既是此网站没有这个url链接。对于顶级URL(例如www.sky8g.com). 

第一种可能性是对站点URL的请求已定向到认为该站点从未有任何页面的Web服务器。如果DNS根本上损坏或者Web服务器的内部记录损坏,则可能发生这种情况。第二种可能性是Web服务器曾经托管过该网站,但现在不再托管它,并且不能或将不提供重定向到现在托管该网站的另一台计算机。如果该站点完全死了-现在实际上在Internet上找不到任何地方-则404消息很有意义。但是,如果站点最近已移动,则也可能会触发404消息。这也是一个DNS问题,因为完全不应再访问旧的Web服务器-全局DNS条目更新后,就仅应访问新的Web服务器。

解决办法:

500 – Internal Server Error

3.如果遇到了网站打开出现了500的错误,那么大部分是网站后端的代码出现了错误问题,服务器不能执行完成有错误。

HTTP错误500是Web服务器遇到阻止其返回请求的网页的问题时发生的通用HTTP状态代码。Web服务器无法更详细地说明HTTP错误500的原因。也称为内部服务器错误,错误500由您的浏览器报告,但问题出在网站本身。

网站浏览器可能显示如下的500错误。

  • HTTP Error 500
  • HTTP Error 500 – Internal Server Error
  • HTTP Error 500.0 – Internal Server Error
  • 500 Internal Server Error
  • 500 Internal server error
  • 500. That's an error
  • Internal Server Error
  • Error 500
  • Temporary Error (500)

解决办法:

502 – Bad Gateway

4. 如果出现 502 bad Gateway的原因一般是 php 程序执行超时。 502 Bad Gateway是指错误网关,无效网关;在互联网中表示一种网络错误。

可以在 php-fpm.log 中看到下面一段日志。

[18-Apr-2019 16:25:35] ERROR: failed to ptrace(ATTACH) child 18523: Operation not permitted (1)
[18-Apr-2019 16:25:35] WARNING: [pool www] child 18523, script '/107lab/index.php' (request: "GET /107lab/get-all-option") executing too slow (5.874515 sec), logging
[18-Apr-2019 16:27:10] WARNING: [pool www] child 18523, script '/107lab/index.php' (request: "GET /107lab/get-all-option") execution timed out (101.120333 sec), terminating
[18-Apr-2019 16:27:10] WARNING: [pool www] child 18523 exited on signal 15 (SIGTERM) after 3087.452377 seconds from start
[18-Apr-2019 16:27:10] NOTICE: [pool www] child 18581 started

PHP-fpm 的子进程18523 因为等待了 101.120333 秒后被强制终止了并重新生成了一个新的子进程 18581
但是因为自动生成新子进程,PHP网页还是可以正常访问的,只是该查询任务被终止了。

解决办法:

这里只需要改一下php.ini 里面的 max_execution_time 的值 和 php-fpm.conf 中的 request_terminate_out 的值就可以了。这两项都是用来配置PHP最大执行时间,超时时php-fpm会终止脚本的执行,同时还会终止执行脚本的Worker进程。就像在日志中所看到的样,php-fpm child 18523 被终止后重新生成了新的worker进程18581,所以 nginx 发现与自己通信的连接断了,就自然会返回502错误给客户端。

php.ini配置

php-fpm.conf配置

504 – GateWay TimeOut

504错误是(网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
服务器(不一定是 Web 服务器)正在作为一个网关或代理来完成客户(如您的浏览器或机器人)访问所需网址的请求。 为了完成您的 HTTP 请求, 该服务器访问一个上游服务器, 但没得到及时的响应。
这通常意味着上游服务器已关闭(不响应网关 / 代理),而不是上游服务器和网关 / 代理在交换数据的协议上不一致。
正常情况下,是由于被请求服务器发送超时引起。

一般情况是产生504错误的原因是 nginx 转发给 fastcgi 的请求没有在限制时间(默认60s)内的到响应。

解决办法:

主要是: fastcgi_read_timeout 的时间既是php的执行时间.

如果有不懂的地方请留言,SKY8G网站编辑者专注于研究IT源代码研究与开发。希望你下次光临,你的认可和留言是对我们最大的支持,谢谢!

上一篇: Centos 8安装后无法连接网络Internet

下一篇: 如何在Magento的template页面添加登录链接点击后并返回当前页面

登录 评论
avatar