欢迎大家分享自己的文档,请点击查阅:分享方法,![]() 如果你喜欢这文章,可以点击文章结尾处百度分享,分享到你的各种社区收藏,或推荐给朋友……
"504 Gateway Time-out"是什么意思?
意思为:网关超时!
网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同时,网关也可以提供过滤和安全功能。大多数网关运行在OSI 7层协议的顶层--应用层。
好了,重新加载php-fpm和nginx的配置,再次测试,至今两周时间内没有再出现504 Gateway Time-out的情况,算是达到效果了。
引起这样的问题大多数情况下可以确定跟nginx本身无关,主要是提交给php-fpm 的请求未能
正确反馈而导致,一般情况下,提交动态请求的时候,nginx会直接把 请求转交给 php-fpm,
而php-fpm再分配php-cgi进程来处理相关的请求,之后再依次返回,
最后由 nginx 把结果反馈给客户端浏览器。
1)大概分析出了原因,
下面做就比较容易了,首先是更改php-fpm的几处配置:
把max_children由之前的32改为现在的64,这样就可以保证有充足的php-cgi进程可以被使用;
可以防止进程都被挂起,提高利用效率.
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>
转载请注明linux系统运维: |