上传多个小文件时,最多需要60秒才能完成

时间:2015-07-04 00:35:04

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

我尝试设置上传到Google云端存储,通常我会有大约200个并发上传文件的大小为5到10kb。当我使用与本地ceph s3兼容的存储相同的代码时,上传时间仅不超过2-3毫秒(这是显而易见的),并且当上传到谷歌s3类存储时,如果我有3到5个线程上传文件的时间通常在200ms以内。但是,只要达到良好的并发性 - 我就会在上传时间上获得线性增量。

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

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

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

1 个答案:

答案 0 :(得分:0)

根据Google's quotas page

  

套接字

     

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

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