【问题标题】:gsutil cp -Rn s3://foo gs://bar is slow and consuming a lot more ingress than egressgsutil cp -Rn s3://foo gs://bar 很慢并且消耗的入口比出口多得多
【发布时间】:2013-08-20 09:31:18
【问题描述】:

我正在尝试在 S3 中复制数据。我们谈论的是几十万个相当大的 blob(许多在 1GB-100GB 范围内)。这些操作是在美国东部的一台机器上针对美国标准的 S3 blob 执行的。

gsutil 3.34 的入口似乎比出口多得多,即使运行了几个小时也是如此。 我尝试调整了一些选项,但没有成功。

示例测量:78387.82 KB/s 输入与 3154.36 KB/s 输出。我可以得到 2x 的比率,但 10x+ 真的感觉不对。

知道会发生什么吗?

【问题讨论】:

    标签: amazon-s3 google-cloud-storage gsutil


    【解决方案1】:

    好吧,事实证明热身时间比我预期的要长得多。不确定哪些操作需要这么长时间的入口;我会怀疑有很多 blob 列表(可能每个进程一个,或者类似的东西)?

    我在下图的 12:00 左右开始同步。

    我刚刚尝试重新启动 gsutil -m cp -Rn s3://foo gs://bar 并观察到相同的 I/O 模式(从入口多于出口开始,我将密切关注前 10-20 小时内的逐步改进)。

    iostat 没有显示任何无法通过日志记录解释的写入活动(很少 KB/s),因此它没有在磁盘上缓冲。

    【讨论】:

    • 你有很多小文件吗?我希望小文件会导致大量的桶列表入口流量,相比之下有少量出口
    • 嗯,是的,也不是。一些关于文件大小的统计,使用s3cmd ls -r s3://foo | awk '{print $3;}' | statistik(来自baze gem):gist.github.com/pcarrier/75b2a24115fe1729973f
    • 考虑到s3cmd ls -r 在不到 20 秒的时间内运行,我绝对不会期待数小时和数小时的缓慢...
    • @PierreCarrier 这里有同样的问题。我不知道这是来自botogsutil,还是它们的交互方式,但这肯定远非最佳。
    【解决方案2】:

    下载量比上传量多 10 倍,这很奇怪。我的意思是,数据总得去某个地方吧?

    一些潜在的建议:

    • 会不会是带宽问题? gsutil cp 将文件从 S3 复制到本地计算机,然后从那里复制到 GCS。如果您的 ISP 限制了您的上传速度,这可能是原因。可能 GCS 正在正常下载数据,但再次上传数据时受到限制。

    • 您是否尝试过“-m”标志? gsutil 默认一次复制一个文件。使用 -m,您可以并行上传许多文件,这可能会大大提高速度。

    【讨论】:

    • 文件可能在上传时被 gzip 压缩。
    • 啊哈!很可能就是这样。
    • 除了文件首先被 gzip 压缩(通过 GNU gzip 没有任何标志)......
    • 我可能会通过监控磁盘空间来发现带宽问题。但是,它似乎非常稳定,总共使用了不到 3GB(跨文件系统)。内存使用量也保持稳定,大约使用了 2GB,缓存了 500MB(超过 64GB :D)。
    • 我确实尝试了-m,这确实有很大帮助,但保持了相同的带宽比率。提供的度量实际上使用-m
    猜你喜欢
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 2013-11-11
    • 1970-01-01
    • 2017-12-22
    • 2018-04-30
    • 2019-10-30
    相关资源
    最近更新 更多