【问题标题】:When uploading multiple small files it takes up to 60 seconds for it to complete上传多个小文件时,最多需要 60 秒才能完成
【发布时间】:2015-07-04 08:46:34
【问题描述】:

我正在尝试设置上传到谷歌云存储,通常我会同时上传大约 200 个大小为 5 到 10kb 的文件。当我使用与本地 ceph s3 兼容存储相同的代码时,上传时间几乎不超过 2-3 毫秒(这很明显),当上传到类似 google s3 的存储时,如果我有 3 到 5 个线程,上传时间是一个文件通常在 200 毫秒内。但是,一旦达到不错的并发性,上传时间就会线性增加。

前 10 个文件在 200 毫秒内上传,接下来的 10 个在 5 秒内上传,接下来的 10 个在 10 秒内上传,以此类推,直到达到 60 秒。 如果我使用多个进程 - 结果是一样的。我正在使用 nodejs 通过https://github.com/Automattic/knox 模块执行上传,池已关闭,因此它不是套接字排队的问题。我已经测试了将 maxSockets 设置为 500 左右的启用池,并没有多大帮助。使用 sockstat 检查时,我最多只能同时打开 40 个与谷歌服务器的连接,即使我会使用 16 个进程同时启动超过 500 到 1000 个上传。这非常奇怪。

谁能帮我诊断问题?谷歌允许从单个 IP 地址打开的连接是否有限制?

我确定我的代码没有问题,因为之前我将它与本地 s3 存储一起使用(本地我的意思是我有一个由 20 台机器组成的集群和磁盘,即使它在同一个数据中心如果阻塞操作或缺少套接字或任何类似问题存在问题,我也会看到上传时间增加,但使用 ceph 时没有这样的事情)。我尝试迁移到谷歌的原因是管理即将死去的硬盘非常烦人,而且这种情况经常发生

【问题讨论】:

    标签: node.js file-upload google-cloud-storage


    【解决方案1】:

    根据Google's quotas page

    套接字

    每日数据和每分钟(突发)数据限制 使用套接字的应用程序的速率受限于每分钟和每天。设置每分钟限制以处理来自应用程序的突发行为。

    该页面还显示了限制。您可能会遇到它们,或者这可能是 Google 运行您的应用的硬件的限制。

    【讨论】:

    • 我认为应用程序不太可能达到套接字限制,因为我只用一个进程和套接字池对此进行了测试,我会在其中预先打开套接字并且它没有区别,整体情况是一样的
    猜你喜欢
    • 2017-02-24
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多