[FAQ] PHP+Nginx 架构网站 502 和 504 问题

 

502 Bad Gateway:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
504 Gateway Time-out:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。

 

PHP 脚本执行中断,受以下几个配置的影响:
  php.ini 配置的 max_execute_time,默认30秒,可以通过 ini_set 和 set_time_limit 都用来设置此值。系统调用、数据库操作 的时间不包含在内。
  https://www.php.net/manual/zh/function.set-time-limit.php
  https://www.php.net/manual/zh/info.configuration.php#ini.max-execution-time

php-fpm 配置 request_terminate_timeout。设置单个请求的超时中止时间。
该选项可能会对 php.ini 设置中的 'max_execution_time' 因为某些特殊原因没有中止运行的脚本有用。设置为 '0' 表示 'Off'。可用单位:s(秒),m(分),h(小时)或者 d(天)。默认单位:s(秒)。默认值:0(关闭)。
  https://www.php.net/manual/zh/install.fpm.configuration.php


其它 php-fpm 本身的优化是根据服务器资源、负载,合理配置fpm子进程数、子进程重启时间。


504错误一般是与 nginx.conf 配置有关。主要与以下几个参数有关:
  fastcgi_connect_timeout
  fastcgi_send_timeout
  fastcgi_read_timeout
  fastcgi_buffer_size
  fastcgi_buffers
  fastcgi_busy_buffers_size
  fastcgi_temp_file_write_size
  fastcgi_intercept_errors
  特别是前三个超时时间,单位是秒,默认是60。
  如果fastcgi缓冲区太小会导致fastcgi进程被挂起从而演变为504错误。

 

Refer:http://www.ttlsa.com/web/analysis-of-site-502-and-504-error/
Link:https://www.cnblogs.com/farwish/p/15529751.html

posted on 2021-11-09 17:59  ercom  阅读(156)  评论(0编辑  收藏  举报