1.背景
ftp在测试环境下载大文件时,没有问题
当发布到生产环境时(阿里云服务器),文件出现不能下载的问题。
2.解决方案
文件下载用的,commons-net 3.3版本
下载代码:
client.retrieveFile(path, os);
开始无法下载,本地文件没有下载到本地,同时接口很长时间不返回结果,影响任务运行。
代码中添加:
client.enterLocalPassiveMode();
后,可以下载,但是下载很慢,一个800MB左右的文件,需要25min。影响客户体验。
后来客户端增加以下配置后,速度大大提升,下载该文件仅需要2min左右。
if(fileSize>100000000){
//小文件一般不需要设置,大文件可提升下载速度
client.setBufferSize(10*1024*1024);
}
client.enterLocalPassiveMode();
client.setDefaultTimeout(3000);//设置默认超时时间
client.setConnectTimeout(3000);//设置连接超时时间
client.setDataTimeout(3000);//设置读取数据超时时间(每次socket传输,不是指整个下载)
client.setControlKeepAliveTimeout(60); //
版权声明:本文为u013984781原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。