当前位置: 主页 > 运维经验 > 运维故障 >

nginx 504 Gateway Time-out(504 Gateway Time-out)解决思路和

时间:2013-05-18 14:19来源:linux系统运维 作者:小编1000 点击:
504 Gateway Time-out是什么意思? 意思为:网关超时! 网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网
欢迎大家分享自己的文档,请点击查阅:分享方法,Linux系统运维
如果你喜欢这文章,可以点击文章结尾处百度分享,分享到你的各种社区收藏,或推荐给朋友……


"504 Gateway Time-out"是什么意思?
意思为:网关超时! 
 
网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同时,网关也可以提供过滤和安全功能。大多数网关运行在OSI 7层协议的顶层--应用层。

引起这样的问题大多数情况下可以确定跟nginx本身无关,主要是提交给php-fpm 的请求未能
正确反馈而导致,一般情况下,提交动态请求的时候,nginx会直接把 请求转交给 php-fpm,
而php-fpm再分配php-cgi进程来处理相关的请求,之后再依次返回,
最后由 nginx 把结果反馈给客户端浏览器。
 
1)大概分析出了原因,
下面做就比较容易了,首先是更改php-fpm的几处配置:
把max_children由之前的32改为现在的64,这样就可以保证有充足的php-cgi进程可以被使用;
 
2)把request_terminate_timeout由之前的0s改为60s,这样php-cgi进程处理脚本的超时时间就是60秒,
可以防止进程都被挂起,提高利用效率.
 
3)接着再更改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.
 
4)另外,php-fpm的默认静态处理方式会使得php-cgi的进程长期占用内存而无法释放,
这也是导致nginx出错的原因之一,因此可以将php-fpm的处理方式改成apache模式.
<value name=”style”>apache-like</value>
 
好了,重新加载php-fpm和nginx的配置,再次测试,至今两周时间内没有再出现504 Gateway Time-out的情况,算是达到效果了。

转载请注明linux系统运维
http://www.linuxyw.com/linux/yunweiguzhang/20130518/389.html

------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
栏目列表
推荐内容