504getwaytime_out什么意思?怎么解决?
一、504 Gateway Time-out什么意思?
504 Gateway Time-out错误指的是没有及时从服务器收到请求,可简单理解为网页请求超时,也就是用户发出访问请求时未得到及时响应导致的错误。
在程序代码角度来说,用户访问请求未能够执行相应的PHP-CGI或PHP-CGI程序,也未做出相应的处理,又或者是CGI程序的响应处理结果未能及时反馈到浏览器。
二、504 Gateway Time-out是由哪些原因造成的?
当访问网站时,nginx出现504 Gateway Time-out错误时,这种问题一般是由于CGI程序执行时间过长或者响应超时所导致的,例如程序加载执行时间是90秒,而nginx环境系统响应时间为30秒,这样就导致了CGI程序执行时间超时。
除以上原因之外,还有以下原因会造成504 gateway time-out错误:
1)网站服务器未启动,php-fpm服务未启动都会导致04 gateway time-out错误;
2)php-fpm的worker进程问题导致04 gateway time-out错误;
3)FastCGI缓存或代理的缓存问题导致04 gateway time-out错误;
4)PHP执行时间过长导致04 gateway time-out错误。
出现以上问题我需要优化程序执行时间,网络攻击问题增强网站安全防御,调大nginx超时限制,使php程序可以正常执行,对于网站加载时间的限制,nginx与php都可以进行相关设置,需要逐一修改。
504GatewayTime-out错误的解决方法:
1、依据web服务器性能及网站流量等因素,对niginx.conf和php-fpm.conf进行合理的设置;
2、niginx.conf和php-fpm.conf合理配置,前提是需要先了解网站服务器性通,例如服务器CPU、内存等硬件设施,从而准确掌握服务器运行情况;
3、通过第三方流量统计工具了解网站流量情况,及时掌握网站日流量及PHP-CGI执行情况。
根据以上了解的服务器性能情况及网站流量情况,对nginx.conf进行合理的设置。
fastcgi_connect_timeout300s;
fastcgi_send_timeout300s;
fastcgi_read_timeout300s;
fastcgi_buffer_size128k;
fastcgi_buffers8128k;#8128
fastcgi_busy_buffers_size256k;
fastcgi_temp_file_write_size256k;
fastcgi_intercept_errorson;
以上这些代码规定了PHP-CGI连接、发送、读取时间限制,根据网站服务器性能和网站流量情况对PHP-CGI进行合理的设置,时间设置过长会给服务器造成压力过大,导致网站打开慢,甚至导致服务器当机,时间设置太短,就会导致网站出现504 Gateway Time-out错误或其它的CGI错误。
4、php-fpm.conf文件中的max_children与request_terminate_timeout这两个重要参数的设置,需要根据php网站程序及网站服务器带宽因素进行综合考虑,并设置合理的数值,这样才能避免网站出现504 Gateway Time-out错误或CGI无响应错误。
5、request_terminate_timeou响应时间一般设置为900s左右,而max_children参数值依据服务器内存大小及网站CGI执行次数,设置出合理的数值,一般可设置为800M左右。