开发反馈短视频平台,上传大文件(478MB)显示504超时,而且超时时间不超过10分钟
1.检查nginx proxy配置,proxy_send_timeout和proxy_read_timeout都设置了600s,排除
2.检查nginx日志,显示请求都是200,确认没有问题
3.怀疑504超时的请求没有进来到nginx,于是带参请求测试(方便确认跟踪请求)
发现前端显示504,后端nginx日志显示200,这说明请求是正常到nginx上的
跟开发沟通确认,前端显示504,但后端文件是上传成功的
4.既然文件上传成功,但504是哪个返回的?
使用fiddler在客户端抓取postman的请求情况,发现“服务器请求”和“服务器开始响应”之间一超过60s,前端就出现504的异常,基本可以确认是服务端超时导致
5.既然是服务器响应的504,nginx端检查正常,那么就是阿里云负载SLB返回的504
检查SLB超时配置,这里连接请求超时时间默认为60s,修改为180s
6.重新上传文件,正常,问题解决
抓包显示 “服务器请求”和“服务器开始响应”之间时间为2min10s左右
说明:正常情况下不会存在这个问题,因为SLB的后端服务器一般为内网服务器;
本次的异常是因为我们测试环境服务器在本地机房,没有单独的ip分配80端口使用,所以通过线上阿里云服务器的nginx 反向代理proxypass到本地机房服务器上的nignx,也就是SLB的后端服务器为远程服务器,网络传输受限,所以导致上传文件超时。