我做了一大堆上传到S3,并且遇到了上限的速度,我不知道如何解决这个问题。
设置:Windows Server 2008 R2 x64,外部HD,使用基于Java的上传工具Jsh3ll和自定义的VBS脚本来closures作业。
一次运行一个进程,我总是被限制在4mbps左右。 我有FiOS在35 / 35mbps的速度,所以它不是一个彻底的限制。 而且,我可以运行并行实例,并可以一路高达35mbps,所以我知道这个问题不是网关/ nic / machine / amazon相关。 运行并行实例在某种程度上可以作为一种解决scheme,但却极大地增加了工作stream程的复杂性。 解决这个问题将使我的生活变得更加简单。
当我第一次这样做的时候,我正在玩弄一堆Windows TCP参数,并且能够简单地获得不受约束的带宽,但是它是不可重复的。
思考?
我强烈怀疑你看到一个带宽延迟产品 (BDP)神器。 一个“长而肥的pipe道”(高带宽,高延迟)限制了TCP在任何给定时间可以“投入”的数据量。 您的观察发现,平行转移运行速度更快是BDP发挥作用的一个重要指标。
S3的往返延迟是什么样的?
您可以尝试通过netsh interface tcp set global congestionprovider=ctcp命令启用复合TCP拥塞提供程序 (CTCP)。 这个拥塞提供商应该“积极”地设置发送窗口,以便在高带宽,高延迟networking上“投放”更多的数据。
来自Microsoft Research的论文:
对于具有较大TCP接收窗口大小和较大带宽延迟产品(带宽乘以连接延迟)的TCP连接,下一代TCP / IP堆栈中的复合TCP(CTCP)会积极地增加发送的数据量一次…在微软内部进行的testing中,对于每秒1千兆的连接,往返时间为50毫秒,大文件备份时间减less了将近一半。 与更大带宽延迟产品的连接可以具有更好的性能。