`
zpball
  • 浏览: 898635 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nginx 504 Gateway Time-out的一些方法

阅读更多
我在CentOS下配置lnmp组合基本上用的都是同样的配置文件,一直都没出现过问题,可最近在一个vps上安装同样的环境之后,网站在线10多人就出现了打开速度非常缓慢的情况,有好几次都是直接达到了nginx中设置的脚本最大超时时间300秒,结果导致nginx往客户端浏览器发送了一个504 Gateway Time-out的错误代码,分析了之后改动了几处配置文件,终于避免了该情况的出现。

从错误代码基本可以确定跟nginx本身无关,主要是提交给php-fpm的请求未能正确反馈而导致,一般情况下,提交动态请求的时候,nginx会直接把请求转交给php-fpm,而php-fpm再分配php-cgi进程来处理相关的请求,之后再依次返回,最后由nginx把结果反馈给客户端浏览器,但我这个vps目前跑的是个纯php应用内容,实际上用户所有的请求都是php请求,有的耗费时间比较久,php-cgi进程就一直都被用满,而php-fpm本身的配置文件只打开了10组php-cgi进程,这样的话在线用户稍微多的话就会导致请求无法被正常处理而出错。

大概分析出了原因,下面做就比较容易了,首先是更改php-fpm的几处配置:

把max_children由之前的10改为现在的30,这样就可以保证有充足的php-cgi进程可以被使用;
把request_terminate_timeout由之前的0s改为60s,这样php-cgi进程处理脚本的超时时间就是60秒,可以防止进程都被挂起,提高利用效率。

接着再更改nginx的几个配置项,减少FastCGI的请求次数,尽量维持buffers不变:

fastcgi_buffers由 4 64k 改为 2 256k;
fastcgi_buffer_size由 64k 改为 128K;
fastcgi_busy_buffers_size 由 128K 改为 256K;
fastcgi_temp_file_write_size 由 128K 改为 256K。

好了,重新加载php-fpm和nginx的配置,再次测试,至今两周时间内没有再出现504 Gateway Time-out的情况,算是达到效果了。
分享到:
评论

相关推荐

    Nginx 502 bad gateway和Nginx 504 Gateway Time-out错误解决方法 错误解决办法

    最近服务器宕机的现象比较频繁,临下班时分,G给挂掉了,502 Bad Gateway Nginx,不由得让我想起之前的504 Gateway Time-out,两者应该有点联系,一定得弄清楚。Nginx 504 Gateway Time-out的含义是所请求的网关没有...

    完美解決Nginx 504 Gateway time-out问题

    主要介绍了完美解決Nginx 504 Gateway time-out问题,需要的朋友可以参考下

    一次nginx 504 Gateway Time-out错误排查、解决记录

    apache经常会不定期不定时间的出现不能服务失去响应,然后nginx出现”504 Gateway Time-out”查看错误日志也看不到任何东西,以为是apache的bug(其实不是,下面会说原因)。 也许年龄大了人就不爱折腾,愿意保持原状...

    nginx 504 Gateway Time-out错误解决方法

    一般看来, 这种情况可能是由于nginx默认的fastcgi进程响应的缓冲区太小造成的, 这将导致fastcgi进程被挂起, 如果你的fastcgi服务对这个挂起处理的不好, 那么最后就极有可能导致504 Gateway Time-out 现在的网站, ...

    LNMPA遇到504 Gateway time-out错误的解决方法

    LNMP面对504 Gateway time-out 因为504 Gateway time-out是Nginx的专属错误,因此起初我以为是nginx配置出错,查找网上的教程,找到相应的解决方法,下面简单说说LNMP面对此种情况的解决方案。Ngin

    Nginx 阿里云服务器提示504

    Gateway Time-out(The gateway did not receive a timely response from the...)解决办法

    nginx提示502 页面的解决方法

    例如: 代码如下: http { …… fastcgi_connect_timeout 300;... 您可能感兴趣的文章:Nginx 502 bad gateway和Nginx 504 Gateway Time-out错误解决方法 错误解决办法Nginx 遇到502 Bad Gateway 自动重启的脚本代

    Nginx timeout超时配置详解

    最近项目中用到了nginx,后台用的是Java, 发现有一个请求后台处理操过了1分钟,结果请求Status Code为504 Gateway Time-out. 理解了下nginx 所有timeout相关的配置,如下: keepalive_timeout HTTP 有一个 KeepAlive...

    Nginx PHP-Fcgi中因PHP执行时间导致504 Gateway Timeout错误解决记录

    主要介绍了Nginx PHP-Fcgi中因PHP执行时间导致504 Gateway Timeout错误解决记录,本文的解决方法得来不易,需要的朋友可以参考下

    nginx-php配置测试通过

    nginx-php服务器配置,已经测试可以正常运行thinkphp框架,重写已经配好

    Nginx服务器中414错误和504错误的配置解决方法

    主要介绍了Nginx服务器中414错误和504错误的配置解决方法,分别对应Request-URI Too Large和Gateway Time-out这样的错误提示,需要的朋友可以参考下

    Nginx 502 Bad Gateway错误常见的4种原因和解决方法

    1.FastCGI worker进程数是否不够 ... 代码如下: ... 代码如下: ...接近配置文件中设置的数值,表明worker进程数设置太少 2.FastCGI执行时间过长 根据实际情况调高以下参数值 ...fastcgi_connect_timeout 300; fastcgi_

    解决Nginx + PHP(FastCGI)遇到的502 Bad Gateway错误

    我让按照以下两个步骤去解决,最后在第2步中将FastCGI的timeout时间增加为300... 2、部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间,例如: 代码如下: …… http

    PHP-Fcgi下PHP的执行时间设置方法

    max_execution_time = 1800;...昨天,一个程序需要导出500条数据,结果发现到150条是,Nginx报出504 Gateway Timeout错误 经观察,发现大约30秒时超时,php.ini中执行时间配置已经是300秒: 复制代码 代码如下:max_e

Global site tag (gtag.js) - Google Analytics