阿里云 OSS 使用 Java SDK 上传很慢 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jorneyr

阿里云 OSS 使用 Java SDK 上传很慢

  •  
  •   jorneyr 2019 年 11 月 9 日 6549 次点击
    这是一个创建于 2352 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想使用阿里云 OSS 存储图片,本地同样的环境下上传 4M 的图片到 OSS,按照帮助文档里的代码实现上传:

    • 使用 Java SDK 上传需要 7 秒左右,有人说默认开启了 CRC 校验,关闭 CRC 检验后速度提高很多,测试过关闭 CRC 校验没什么变化
    • 使用 PHP SDK 上传这个文件只需要 2 秒左右

    PHP 2 秒上传完成感觉速度是正常的,说明不是本地网络慢导致的,不知道 Java 版做了什么设置导致这么慢,经过多次反复测试时间都没什么变化,大家有遇到过这个情况吗,帮忙看看什么是原因导致的?

    Java 代码:

    import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.model.PutObjectRequest; import java.io.File; import java.io.FileNotFoundException; /** * 上传文档: https://help.aliyun.com/document_detail/32013.html?spm=a2c4g.11186623.3.4.3ac339a5K0c1T7 * 简单上传: https://help.aliyun.com/document_detail/84781.html?spm=a2c4g.11186623.2.7.218d59aa5mAief#concept-84781-zh */ public class AliOss { public static void main(String[] args) throws FileNotFoundException { long start = System.currentTimeMillis(); System.out.println("Start: " + start); // [1] Endpoint 以杭州为例,其它 Region 请按实际情况填写 // [2] 阿里云主账号 AccessKey 拥有所有 API 的访问权限,风险很高 String endpoint = "oss-cn-beijing.aliyuncs.com"; String accessKeyId = "xxx"; String accessKeySecret = "xxx"; // [3] 创建 OSSClient 实例 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); // [4] 创建 PutObjectRequest 对象 String filename = System.currentTimeMillis() + ".jpg"; PutObjectRequest putObjectRequest = new PutObjectRequest("biaomac", filename, new File("/Users/Biao/Pictures/storm.jpg")); // [6] 上传文件 ossClient.putObject(putObjectRequest); // [7] 关闭 OSSClient ossClient.shutdown(); // [8] 输出访问文件的 URL // URL 为 Bucket 域名 biaomac.oss-cn-beijing.aliyuncs.com 加上文件名字, // 如 https://biaomac.oss-cn-beijing.aliyuncs.com/avatar.jpg System.out.println("https://biaomac.oss-cn-beijing.aliyuncs.com/" + filename); System.out.println("End: " + (System.currentTimeMillis() - start)); } } 

    PHP 代码:

    <?php require_once __DIR__ . '/autoload.php'; use OSS\OssClient; use OSS\Core\OssException; $endpoint = "oss-cn-beijing.aliyuncs.com"; $accessKeyId = "xxx"; $accessKeySecret = "xxx"; try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $cOntent= file_get_contents('/Users/Biao/Pictures/storm.jpg'); $optiOns= array(); $ossClient->putObject('biaoac', 'img/1.jpg', $content, $options); } catch (OssException $e) { print $e->getMessage(); } ?> 
    6 条回复    2019-11-10 09:16:20 +08:00
    opengps
        1
    opengps  
       2019 年 11 月 9 日
    这俩语言我都没用熟练,我用 .net 版本上传还是很快的。你可以试试在不同位置打印时间戳日志,分析下具体满在哪一步。重点是那句执行上传的代码的前后要加上时间戳打印,对比这句代码消耗时间的差异
    akira
        2
    akira  
       2019 年 11 月 9 日
    1234567 都输出下日志 看看时间消耗是在哪一步
    jorneyr
        3
    jorneyr  
    OP
       2019 年 11 月 10 日
    上传文件 ossClient.putObject(putObjectRequest) 这一句花了 6 秒多,其他的地方都正常
    jorneyr
        4
    jorneyr  
    OP
       2019 年 11 月 10 日
    谢谢大家,最后一步一步的 Debug,发现是 ServiceSignature.sign 中获取摘要算法 Mac.getInstance("HmacSHA1") 这一句慢,是系统原因,在 hosts 中增加了 127.0.0.1 localhost Biao.local 后就快了,最后 4M 的文件 1.6 秒就传完了。
    uglyer
        5
    uglyer  
       2019 年 11 月 10 日 via iPhone
    为什么不走内网的 endpoint
    jorneyr
        6
    jorneyr  
    OP
       2019 年 11 月 10 日
    @uglyer 我们有的服务器不是阿里云的,有金山云,有机房托管的,还有的需要直接从客户端上传到阿里云,然后使用百度的 API 进行人脸识别,所以不能统一都走阿里云内网。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     869 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 20:58 PVG 04:58 LAX 13:58 JFK 16:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86