网页出现“504 Gateway Time-out”,没有其它信息是啥原因?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网页出现“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左右。

nginx

模具编程培训,免费预约报名中!速来围观!
三玖教育
广告
查看详情
参考技术A 指服务器故障,打开网页失败有多种原因 参考技术B 有数据实体返回,也不允许有实体返回。本回答被提问者采纳

如何解决“504 Gateway Time-out”错误

做网站的同学经常会发现一些nginx服务器访问时候提示504 Gateway Time-out错误,一般情况下是由nginx默认的fastcgi进程响应慢引起的,但也有其他情况,这里我总结了一些解决办法供大家参考。

技术分享

方法/步骤

  1. 情况一:由于nginx默认的fastcgi进程响应缓冲区太小造成

           这种情况下导致fastcgi进程被挂起,如果fastcgi服务队这个挂起处理不是很好的话,就可能提示“504 Gateway Time-out”错误。

  2. 情况一解决办法:

           默认的fastcgi进程响应的缓冲区是8K,我们可以设置大一点,在nginx.conf里,加入:fastcgi_buffers 8 128k

           这表示设置fastcgi缓冲区为8块128k大小的空间。

  3. 情况一解决办法(改进):

           在上述方法修改后,如果还是出现问题,我们可以继续修改nginx的超时参数,将参数调大一点,如设置为60秒:

           send_timeout 60;

           经过这两个参数的调整,结果没有再提示“504 Gateway Time-out”错误,说明效果还是挺不错的,问题基本解决。

  4. 情况二:PHP环境的配置问题

           这里我们需要对php-fpm和nginx进行配置修改。因为这种情况下,也会出现“504 Gateway Time-out”错误提示。

  5. 情况二解决办法( php-fpm配置修改):

          将max_children由之前的10改为30,这样操作是为了保证有充足的php-cgi进程可以被使用。

          将request_terminate_timeout由之前的0秒改成60秒,这样使php-cgi进程处理脚本的超时时间提高到60秒,可以防止进程被挂起以提高利用效率。

  6. 情况二解决办法(nginx配置修改):

          为了减少fastcgi的请求次数,尽量维持buffers不变,我们要更改nginx的几个配置项,如下:

          将fastcgi_buffers由4 64k改为2 256k;

          将fastcgi_buffer_size 由64k改为128k;

          将fastcgi_busy_buffers_size由128k改为256k;

          将fastcgi_temp_file_write_size由128k改成256k。

  7. 7

    情况二解决办法修改完,我们需要重新加载php-fpm和nginx的配置,然后再进行测试。之后就没有发现“504 Gateway Time-out”错误,效果也还是不错的!

以上是关于网页出现“504 Gateway Time-out”,没有其它信息是啥原因?的主要内容,如果未能解决你的问题,请参考以下文章

网页出现“504 Gateway Time-out”,没有其它信息是啥原因?

网页出现“504 Gateway Time-out”,没有其它信息是啥原因?

如何解决504 Gateway Time-out

打开网页显示504 Gateway Time-out是啥意思

nginx出现504 Gateway Time-out的解决思路

nginx 出现504 Gateway Time-out的解决方法