记一次nginx 504超时

2014-05-30 09:34:33 查看评论 2416 人阅读    

公司使用的是haproxy做负载均衡,nginx+php+mysql的架构。由于后台有一个导入用户的功能需要执行的时间很长,页面上报错了504 Gateway Time-out。

关于504的说明

服务器(不一定是 Web 服务器)正在作为一个网关或代理来完成客户(如您的浏览器或我们的 CheckUpDown 机器人)访问所需网址的请求。
为了完成您的 HTTP 请求, 该服务器访问一个上游服务器, 但没得到及时的响应。
这通常意味着上游服务器已关闭(不响应网关 / 代理),而不是上游服务器和网关 / 代理在交换数据的协议上不一致。


因为使用量不大以及是内部人员使用的,懒得用队列之类的了。所以想着修改nginx的超时时间,让程序执行时间长一点。

修改nginx的配置文件。在http{}中增加以下配置

#fastcgi的超时配置,(针对后端的fastcgi 生效, fastcgi 不属于proxy模式)

fastcgi_connect_timeout 5;     #连接超时
fastcgi_send_timeout 300;      #写超时
fastcgi_read_timeout 300;      #读取超时

#Proxy: (针对proxy/upstreams的生效)

proxy_connect_timeout 15s;      #连接超时
proxy_read_timeout 300s;        #读超时
proxy_send_timeout 300s;        #写超时

另外配置php-fpm的超时时间

request_terminate_timeout = 300

重启nginx和php-fpm。


本来以为就大功告成了,没想到还是返回504超时。使用chrome查看超时时间为50s。查看nginx的错误日记也没找到超时的错误。

分类: Nginx/Apache 标签: haproxy 504 timeout