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