nginx配置负载均衡时,下载大文件超时问题

2020-05-12

原因分析:

 1)、代理服务器报告:上游过早的关闭连接,好像问题出在被代理服务器;而被代理服务器则抱怨:上游服务器超时。那么一个很合理的推论是:代理服务器很长时间没向被代理服务器请求数据,被代理服务器认为代理服务器已经掉线或完成任务,于是主动断开连接,代理服务器发现需要数据,再连接时,已经连接不上了。

 2)、正常的流程应该是:只要客户端一直下载,“客户机->代理服务器->被代理服务器”,这一连串的数据流不会中断,也就不会出现超时。

 3)、出现超时只能有一种情况:代理服务器缓存了大文件。

 4)、代理服务器接到下载请求,向被代理服务器请求数据,由于两个服务器之间网速快,所以代理服务器请求速度要远大于向客户端发送的速度,这就导致一下正常的代理方式:代理服务器要缓存数据。

 5)、但是两个服务器之间的速度实在是太快了,缓存1G数据也就是分分钟的事情,而客户端需要慢慢下载,可能需要十几、甚至几十分钟。代理服务器和被代理服务器这段时间内没有什么事可干,与是两端静默的时间一长,超过了timeout的时间(一般是60s),被代理服务器就认为代理服务器掉线。

location / {
    1、禁用代理服务器缓存:
     proxy_pass http://192.168.0.1;
     proxy_buffering off;
     2、设置更长的超时时间
     proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
     proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
}

文章来源于:https://www.cnblogs.com/breezey/p/6740229.html

{/if}