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。
2010-04-12 13:10 举报
已邀请:
0

mbmf1982

赞同来自:

那怎么查看fastcgi_buffers由 4 64k 改为 2 256k;
fastcgi_buffer_size由 64k 改为 128K;
fastcgi_busy_buffers_size 由 128K 改为 256K;
fastcgi_temp_file_write_size 由 128K 改为 256K是用满了,还是没用满啊,要加的话加多少
0

阿铭 管理员

赞同来自:

其实这篇文章是摘自互联网,我遇到504时,并没对nginx和php调这些参数,我只是调节了nginx中的
keepalive_timeout   这个参数,我所管理都服务器因为网络环境还是比较好的,一般这个参数我都设置成10,如果频繁出现504,那么很有可能这个参数设置太小,那么就需要适当加大了,比如说30或60,另外我发现,mysql的一个参数跟504也有关系,就是wait_timeout 这个参数,所以当出现504时也要考虑把这个参数适当调大一些,要大于30。
0

雷老师 管理员

赞同来自:

楼主高见
0

9gog6o5

赞同来自:

tel:182,86119,596举报检举官员事件发帖,举报爆料曝光
举报专业发帖,检举爆料曝光,还社会一个公道。QQ:152.11222,38  电话182,86119,596 点击百度快照
假设看不到信息,请点击右下角“百度百度快照”。本团队是网络专业举报发帖,由8人组成,日手工发帖量6000,有24万论坛的数据。可以让你需要传播的信息2天之内发送到各大搜索引擎(如百度,谷歌等)。有无数热心的网友关注转载。
本团队自2008年创办,已有3年的历史和经验,为一些正规渠道无法上报,无法让公众知晓的事件发帖曝光。 为整个社会更加公平公正贡献一份力量。
QQ:152.11222,38  电话182,86119,596
0

kevin_tao

赞同来自:

铭哥,原本书上给的配置好像没有fastcgi_buffers这些,是要自己手动加上去吗?

另外,我的论坛也是遇到504问题,我的论坛如果输入http://www.kevintaotao.com/forum.php就能马上反应,但是输入www.kevintaotao.com就没反应

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: