共计 1432 个字符,预计需要花费 4 分钟才能阅读完成。
网页提示 504 gateway time-out 是什么意思? 大家在访问网站的时候通常会遇到 502 错误、404 错误等,很少会遇到 504 错误。但是在我们去访问大流量或者内容数据量较多的网站时,打开网页偶尔就会出现 504 gateway time-out,这到底是什么意思? 网页出现这种情况又该如何解决呢?
以下原因会造成 504 gateway time-out:
(1) 首先需要确定的是后端服务器启动没有,当然在这里是 php-fpm 进行启动没有。
(2) 其次是确定 php-fpm 的 worker 进程是否够用。
(3)FastCGI 缓存或代理的缓存情况。
(4)PHP 执行时间长。
504 gateway time-out 是什么意思? 如何解决?
首先,大家对于 504 Gateway Time-out 的字面意思可以理解为网页请求超时,这是我们在浏览网站网页时发出的请求没有响应,从网站程序层面来讲,是请求未能够执行相应的 PHP-CGI 程序,或者 PHP-CGI 程序未能做出相应的处理,又或者是 CGI 程序的响应处理结果未能够反馈到浏览器或者未能及时反馈到浏览器。
其次,04 Gateway Time-out 错误多是存在于 Nginx 网站服务器环境下,多与 nginx.conf 与 php-fpm.conf 设置是否正确合理有关。504gatewayTime-out 错误的解决方法是根据网站服务器性能及网站流量等诸多因素整合考虑,正确合理的设置 niginx.conf 和 php-fpm.conf 配置。
而进行正确合理 nginx.conf 配置,需要我们首先了解清楚我们网站服务器的配置性能,包括 CPU、内存等基本配置,并对网站服务器进行必要的性能测试,从而准确的掌握网站服务器自身性能状况;
接下来,可以通过网站统计代码的添加,分析一段时间内网站流量状况,比如:百度统计、CNZZ 站长统计等,掌握网站日流量及 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 的连接、发送和读取时间限制,需根据服务器性能及网络流量综合考虑设置,时间设置过长会给网站服务器造成压力,导致网站响应缓慢,甚至服务器宕机; 时间设置过短,则会出现 504 Gateway Time-out 或者其他 CGI 无响应错误。
还有就是 php-fpm.conf 中 max_children 与 request_terminate_timeout 两个重要参数的设置。这两个参数的设置需要我们根据 PHP 程序情况及服务器带宽状况综合考虑并计算出合理准确的值,才能够避免 504 Gateway Time-out 或者其他 CGI 无响应错误的出现。
正常情况下,一般网站可将 request_terminate_timeou 设置在 900s 左右,而 max_children 值根据服务器内存大小和 CGI 请求数目设置为合理的数值,一般设置为 800M 左右。