Node.js 上载多个小文件时,最多需要60秒才能完成

Node.js 上载多个小文件时,最多需要60秒才能完成,node.js,file-upload,google-cloud-storage,Node.js,File Upload,Google Cloud Storage,我正在尝试设置上传到谷歌云存储,通常我会有大约200个大小为5到10kb的文件同时上传。当我使用与本地ceph s3兼容的存储相同的代码时,上传时间几乎不超过2-3ms,这一点很明显,当上传到类似google s3的存储时,如果我有3到5个线程,一个文件的上传时间通常在200ms以内。然而,一旦我达到了相当好的并发性,我就会得到上传时间的线性增量 前10个文件在200秒内上传,下10个文件在5秒内上传,下10个文件在10秒内上传,以此类推,直到60秒。 如果我使用多个进程,结果是相同的。我使用n

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

前10个文件在200秒内上传,下10个文件在5秒内上传,下10个文件在10秒内上传,以此类推,直到60秒。 如果我使用多个进程,结果是相同的。我使用nodejs来执行模块的上传,池是关闭的,所以这不是套接字排队的问题。我测试了maxSockets设置为500左右的启用池,但没有多大帮助。在使用sockstat进行检查时,我最多只能打开40个到google服务器的连接,尽管我会使用16个进程同时启动500到1000多个上传。这是非常奇怪的

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

我确信我的代码没有问题,因为之前我在本地使用s3存储,我的意思是我有一个由20台机器组成的带有磁盘的集群,即使它在同一个数据中心,如果出现阻塞操作或缺少套接字或类似问题,我也会看到上传时间增加,但使用ceph时不会出现这种情况。我之所以尝试迁移到谷歌,是因为管理濒临死亡的硬盘驱动器非常烦人,而且这种情况经常发生

插座

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


该页面还显示了限制。你可能会遇到这些问题,或者这可能是谷歌让你的应用程序运行的硬件的一个限制。

我认为应用程序不太可能达到套接字限制,因为我只用一个进程和套接字池测试了这一点,在这个进程中,我会预先打开套接字,但这并没有什么区别,总体情况是一样的