【发布时间】:2021-07-24 03:52:14
【问题描述】:
所以我有一个 GCP 存储桶,我必须将文件上传到它。问题是我有 1000 万个文件要上传到存储桶中(每个文件大小为 50kb),并且我的时间限制为 8 小时或更短。目前,我正在使用一个 Java 程序 (google ref code) 并在 1000 张图像上对其进行了测试,它在大约 300 毫秒内上传每个文件,但如果我使用多线程;我已经能够将平均时间减少到 40 毫秒(使用 20 个线程)。我最多可以使用 60 个线程并将时间进一步减少到 15-20 毫秒,但我也面临 3 个问题:
-
每个文件 20 毫秒不够快。我需要它至少为 3 毫秒或更短。
-
当我超过 25 个线程时,它会抛出“com.google.cloud.storage.StorageException: Connect timed out”异常。
-
超过 60 个线程,程序似乎并没有变得更快(我猜是硬件限制)。
附加信息:
我的网速是 700Mbps 到 1.3 Gbps。我考虑过压缩和上传,但我们也有一些限制,所以不能使用这种方法。
提前致谢。
【问题讨论】:
-
你能分享你的文件的完整路径名模式吗?
-
在我的本地设备上:driveletter\foldername\filename(例如:I:\test\G00000B5_1608532119152.png) 在 GCP 存储桶上:bucketname\foldername\filename(例如:bucket_1\barcode11\G00000B5.png )
-
好的,你有每个文件的增量吗?类似
bucket_1\barcode11\G00000B6.png -
是的,我愿意...所有上传的文件都是串行的,但没有必要以这种方式上传
标签: java google-cloud-platform file-upload google-cloud-storage