【问题标题】:How to measure/throttle curl memory use?如何测量/限制 curl 内存使用?
【发布时间】:2021-04-20 21:56:33
【问题描述】:

curl 可执行文件将其输出重定向到标准输出时,它的内存使用是否与下载内容的总大小成正比?

如果我下载一个带有curl 的 1GB tgz 并通过管道传输到 tar(如下例所示),使用的内存是否与 1GB 成正比?

curl -sSl https://path/to/1GB_file.tar.gz | tar -xvxf - -C /

如果答案是“是”,是否有办法“节流”或限制curl 使用的最大内存,而不会直接导致下载本身失败?

有没有办法测量curl 在下载给定文件时使用了多少内存(动态或最大值)?

【问题讨论】:

  • 我非常怀疑它是否相关 - cURL 和 tar 都会流式传输。我想内存使用只是缓冲区。虽然将其转储到您的标准输出可能是一个问题 - 因为您的终端可能会缓冲全部内容。在测量方面,也许首先在另一个窗口中使用top
  • time -v 怎么样?
  • @BoristheSpider - 我的 linux 机器上似乎没有 time,我也不允许 apt install 任何东西。 >:(

标签: curl memory memory-management


【解决方案1】:

我将提供这个作为答案,但它是从新的阅读/发现拼凑而成的,所以这可能并不理想。

生成我的curl 进程后,我快速确定它的pid,而它仍在运行,并在另一个shell 中运行grep VmPeak /proc/<pid>/status。这样做几次,希望在curl 进程结束时接近,这样你就得到了一个真正全面的峰值。

对于 1.7GB 的文件,curl 似乎使用了 223016 kB 的峰值。

认为这意味着 curl 不严格使用与目标文件大小成比例的内存(即 >= 目标文件大小)

【讨论】:

    猜你喜欢
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 2019-05-02
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 2017-08-02
    相关资源
    最近更新 更多