app教程网 学习教程 error 504 gateway timeout hsg-cdnb-0010(504 gateway time-out解决流程)

error 504 gateway timeout hsg-cdnb-0010(504 gateway time-out解决流程)

Nginx的特点是强大的静态处理,apache的特点是稳定的动态处理。它们的组合是LNMPA,Nginx前端处理,Apache后端,这样静态处理会很快,动态处理会很稳定。

当我以为安装后一切都会好的时候,没想到更新网站时出现了504网关超时。刚开始我以为是偶然,但是尝试了很多次还是发生了,于是决定想办法解决。

LNMP timed out facing 504 gateway.

因为504网关超时是nginx的专属错误,一开始我以为是Nginx的配置错误。查一下网上教程,找到相应的解决方法。让我们简单谈谈LNMP对这种情况的解决方案。

Nginx出现这样的错误是因为PHP-CGI进程的数量被限制的太少了。面对更新网站这类操作,很可能会出现流程不足,超时的情况,所以会修改两个涉及处理时间的文件。

首先是文件nginx.conf,这个文件在/nginx/conf/nginx.conf打开后,主要是前几次修改,建议修改到120秒以上。至于用什么工具修改,

建议在线命令行编辑;或者用winscp下载,用Dreamweaver修改。

fastcgi_connect_timeout 300s;

fastcgi_send_timeout 300s;

fastcgi_read_timeout 300s;

fastcgi_buffer_size 128k;

fastcgi_buffers 8 128k;#8 128

fastcgi_busy_buffers_size 256k;

fastcgi_temp_file_write_size 256k;

其次,我们需要修改php-fpm.conf文件,该文件位于/php-5.2.17/etc/php-fpm.conf中,不同一键安装包的位置不同。反正php安装后找文件下面的etc文件夹就行了。

在线编辑或下载并在Dreamweaver中编辑。

进入文件后搜索“max_children”。这是php-cgi进程的数量。一个进程占用20M~30M内存,按照自己的VPS或者云主机内存计算,像512M内存。

建议设置为18;另外搜索“请求_终止_超时”,就是超时。如果php程序需要长时间运行,时间设置长一点会更好,比如设置为120秒,单位默认为秒。

也可以写成120。

LNMPA encountered 504 gateway timeout.

我按照Nginx的解决方案设置的时候,很快就设置成功了,但是还是有504网关超时。此时,我直接切换到LNMP组合,发现我不再遇到504网关超时错误。

这说明设置已经生效;为什么会有这样的错误?

经过大量的资料查找,终于发现这是nginx和apache的通信时间设置问题。当用户发送php脚本执行请求时,nginx不会执行php,会把这个问题留给Apache在后台处理,Nginx会等一段时间。

Apache可以在等待时间内处理php脚本请求。如果不处理,nginx将返回504网关超时错误,而不接收数据请求。实际情况是apache还是会在后台处理php脚本。

只是前台返回了一个错误。

解决方法是修改nginx和apche的通信时间,具体是通过配置proxy.conf这个文件在/nginx/conf/下,名字可能会变。例如,一些安装包是laproxy.conf

反正就是个**proxy.conf文件。

proxy_connect_timeout 60;

proxy_send_timeout 600;

proxy_read_timeout 90;

proxy_buffer_size 128k;

proxy_buffers 8 128k;

proxy_busy_buffers_size 256k;

proxy_temp_file_write_size 100m;

第一项是连接时间,前端在60s内连接到后端,第二项是发送时间,允许后端在90s内返回数据。第三次是读写时间,是前端等待后端处理的时间。

这是504网关超时的根本原因。这个错误说明这个值太小,建议不要小于600s,服务器越差,设置的时间越长,保证处理完成。

当我设置好这个文件,重启nginx和apache,再次更新文章,就不会遇到这种错误,说明错误的原因不是nginx,而是前端和后端的通信时间太短。此外,nginx将有502个错误,

其实原理差不多,LNMPA组合还是通过设置上面的文件来设置前后端的通信时间。

本文来自网络,不代表本站立场,转载请注明出处:https: