gsutil 节流

概览

gsutil 可能会占用大量网络带宽,尤其同时使用 -m(多线程)选项时。在某些情况下,这会导致问题,举例来说,如果您通过很多其他重要作业亦使用的网络链接启动大型同步操作。

虽然 gsutil 没有节流请求的内置支持,但 Linux 和 macOS 上有多种策略和各种工具可用于 gsutil 节流请求。如果您通常使用 -m 选项,则减少网络带宽的第一步是从命令中移除 -m

如果您想进一步限制请求,则可以使用 Trickle 工具(可通过 Ubuntu 系统上的 apt-get 获取),它可让您限制 gsutil 占用的带宽。例如,以下命令将 gsutil rsync 占用的上传和下载带宽限制为 100 KBps:

trickle -d 100 -u 100 gsutil -o "GSUtil:parallel_process_count=1" \
  -o "GSUtil:parallel_thread_count=1" rsync -r ./dir gs://some bucket

另一种工具是 ionice(内置在多款 Linux 系统中),它可让您限制 gsutil 占用的 I/O 容量(例如,避免让它独占本地磁盘)。例如,以下命令可以降低 gsutil 的 I/O 优先级,这样 gsutil 就不会独占本地磁盘:

ionice -c 2 -n 7 gsutil -m rsync -r ./dir gs://some bucket

调整带宽占用量的另一种方法是修改 parallel_process_countparallel_thread_count 的值。这些参数是在 .boto 配置文件中设置的,但您也可以使用顶级 -o 选项按命令控制这些参数。