ubuntu14.04 nginx报upstream timed out 问题原因,解决办法

来源:互联网 发布:java 毫秒转日期 编辑:程序博客网 时间:2024/06/07 04:53

访问php时一直出现http 504Gateway Time-out错误

错误日志里看到几百个 upstream timed out 的错误

2016/11/0110:32:45 [error] 3897#0: *1831129 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 42.92.152.137, server: xxx.xxx.cn, request: “GET / HTTP/1.1″, upstream: “fastcgi://unix:/var/run/php5-fpm.sock:″, host: “xxx.xxx.cn”, referrer: “http://xxx.xxx.cn/”

从日志的表示来看应该不是nginx的问题,而是 fast-cgi 执行超时没有及时返回数据到ngnix的问题. 可web和数据库负载都不高,不应该是程序超时的问题.

一般看来, 这种情况可能是由于nginx默认的fastcgi进程响应的缓冲区太小造成的, 这将导致fastcgi进程被挂起, 如果你的fastcgi服务对这个挂起处理的不好, 那么最后就极有可能导致504 Gateway Time-out
现在的网站, 尤其某些论坛有大量的回复和很多内容的, 一个页面甚至有几百K
默认的fastcgi进程响应的缓冲区是8K, 我们可以设置大点
在nginx.conf里, 加入:

fastcgi_buffers 8 128k

这表示设置fastcgi缓冲区为8×128k
当然如果您在进行某一项即时的操作, 可能需要nginx的超时参数调大点, 例如设置成60秒:

send_timeout 60;

NGINX反代理超时报错,解决方法:

server {
 listen  80;
 server_name  *.xywy.com ;
 large_client_header_buffers 4 16k;
 client_max_body_size 300m;
 client_body_buffer_size 128k;
 proxy_connect_timeout 600;
 proxy_read_timeout 600;
 proxy_send_timeout 600;
proxy_buffer_size 64k;
proxy_buffers  4 32k;
 proxy_busy_buffers_size 64k;
 proxy_temp_file_write_size 64k;

……………………

service nginx restart

vi /etc/php5/fpm/php-fpm.conf 增加以下配置

request_terminate_timeout=30s (php.ini早就是max_execution_time = 30

后提示变成502了,


一看php的错误日志如下:

2016/11/01 10:36:46 [error] 5471#0: *238740 connect() to unix:/var/run/php5-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 42.92.152.137, server:*.*.cn, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "*.*.cn"

肯定是之前修改了php-fpm.conf没有重启php-fpm的缘故

重启 /etc/init.d/php5-fpm restart
问题解决

0 0
原创粉丝点击