`

解决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进程,这样的话在线用户稍微多的话就会导致请求无法被正常处理而出错。
  

nginx.conf的相关设置/usr/local/nginx/conf:

php-fpm.conf的相关设置/usr/local/php/etc/(***LNMPA无此文件!***)

 


  大概分析出了原 因,下面做就比较容易了,首先是更改php-fpm的几处配置:
  
  把max_children由之前的10改为现在的30,这样就可以保证 有充足的php-cgi进程可以被使用;
  把request_terminate_timeout由之前的0s改为60s,这样php-cgi进程 处理脚本的超时时间就是60秒,可以防止进程都被挂起,提高利用效率。//亲自测试,还是改成0s了,因为改成60s就502了。。
  
  接着再更改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的情况,算是达到效果了。

   

  另外,php-fpm的默认静态处理方式会使得php-cgi的进程长期占用内存而无法释放,这也是导致nginx出错的原因之一,因此可以将php-fpm的处理方式改成apache模式。
  <value name=”style”>apache-like</value>

  从更改完毕到现在的测试表明上述方式的效果还是很明显的,并没有发现一次Nginx502 bad gateway或504 Gateway Time-out错误。当然,如果你的VPS或者服务器的性能足够好可以根据具体情况不必做无谓的改动。

分享到:
评论

相关推荐

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

    Nginx 504 Gateway Time-out 是一种...总的来说,解决 Nginx 504 Gateway Time-out 问题需要结合服务器的实际情况,从多个角度进行调整和优化。通过上述方法,可以有效地减少错误发生,提高网站的稳定性和用户体验。

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

    解决这两个问题其实是需要综合思考的,一般来说Nginx 502 Bad Gateway和php-fpm.conf的设置有关,而Nginx 504 Gateway Time-out则是与nginx.conf的设置有关。 Nginx 504 Gateway在之前的文章中已经记录

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

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

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

    NGINX 504 Gateway Time-out 错误通常发生在客户端向服务器发起请求后,服务器端没有在预期的时间内返回响应。对于这种情况,我们可以通过调整 NGINX 的配置参数来解决,具体涉及以下几个方面: 1. FastCGI 缓冲区...

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

    总之,在遇到LNMPA架构下的504 Gateway Time-out错误时,可以通过调整Nginx的超时设置和Nginx与Apache的通信时间设置来解决问题。务必根据实际服务器的配置和资源情况,合理设置这些参数,以保障网站的稳定运行。

    Nginx 阿里云服务器提示504

    标题 "Nginx 阿里云服务器提示504" 涉及的问题是关于Web服务器Nginx在阿里云环境中遇到了“504 Gateway Time-out”错误。这个错误通常意味着Nginx作为前端代理服务器,未能在预设的时间内从后端应用服务器(如Apache...

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

    总结来说,解决Nginx PHP-FPM环境下504 Gateway Timeout错误的方法主要涉及调整PHP-FPM的request_terminate_timeout参数,以及Nginx中upstream相关超时配置。这些调整能够确保长时间运行的PHP脚本不被不恰当的超时...

    nginx提示502 页面的解决方法

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

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

    2. **调整超时设置**:在Nginx配置中,可以通过`proxy_read_timeout`指令调整等待上游服务器响应的时间,例如: ```nginx proxy_read_timeout 30s; # 默认值是60s,根据实际情况调整 ``` 3. **优化后端服务**:...

    Nginx timeout超时配置详解

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

    Nginx 502 bad gateway问题的解决方法

    ### Nginx 502 Bad Gateway 问题的解决方法 #### 一、问题概述 在Web服务器运维中,遇到“502 Bad Gateway”错误是较为常见的问题之一。此错误意味着Nginx作为反向代理服务器,在尝试访问后端应用服务器(如...

    nginx-php配置测试通过

    在Web服务器领域,Nginx以其高效的反向代理、负载均衡和静态文件处理能力而备受青睐。与此同时,PHP是动态网站开发中广泛使用的服务器端脚本语言,尤其适合处理PHP框架如ThinkPHP的应用。将Nginx与PHP结合,可以构建...

    Nginx常见错误及解决方法.doc

    Nginx 中的 502 Bad Gateway 错误是由于 PHP-FPM 的 max_execution_time 和 request_terminate_timeout 设置所致。当 PHP 脚本的执行时间超过这两个值时,PHP-FPM 会终止脚本的执行,并断开与 Nginx 的连接,导致 ...

Global site tag (gtag.js) - Google Analytics