Nginx上传文件很慢很慢

收到同事反馈,一个上传apk的接口,传一个180多兆的文件,一直转圈,最终提示上传文件失败

Bug所处背景

带宽为10M(手动😳囧的表情,带宽真给力)的云服务器,额,,,就算按照7M的带宽,如果是一个180M的文件,网络顺畅的话,大概需要xxx 。 项目主要是前端用formData封装file,然后ajax提交。

查找原因

nginx 的error 日志里发现,请求里的body太大了。还有就是前端控制台会报一个ERROR_CONECTION_RESET。 最初一直怀疑是自己项目里的代码,但是发现后端接口迟迟都没有收到请求,所以应该是卡在了后端接口之前,说到底还是上传慢或者上传途中出问题了。

解决办法

    修改nginx的上传文件上限(client_max_body_size),以及缓存(buffer_size)
    ajax设置timeout ,如果超时的话,直接走ajax的error方法,里面给出提示
var formData = new FormData();
	formData.append("file",file);
	

	$.ajax({
          
   
		url:/xxx
		,type:post
		,processData:false
		,contentType:false
		,time: 120000 //ms
		,success:function(data){
          
   
		}
		,error:function(){
          
   
			//超过了2分钟(timeout),这里提示文件上传失败或者连接超时
		}
    });

最终结果

上传了一个180多兆的apk,耗3分钟,/(ㄒoㄒ)/~~ ,😔😔😔

经验分享 程序员 微信小程序 职场和发展