S3是否支持HTTP流水线操作?

时间:2011-10-13 10:31:06

标签: http amazon-web-services amazon-s3 pipelining

我每分钟都有数以千计的小文件(约1 KB)上传到S3。 如果我上传循环中的每个文件 “发送我的HTTP请求 - 等待S3的HTTP响应 - 发送下一个请求 - 等待下一个响应...”, 它需要花费大量时间,因为我必须在S3和我的服务器之间等待2次延迟。 当然我已经使用了HTTP Keep-Alive标题。

所以我尝试发送多个HTTP请求而不等待相应的(HTTP流水线)。我尝试批量发送20个请求并等待20个响应。我预计这可能会节省很多时间,因为我仍然可以在前一次回复途中发送请求。

然而,它并没有让世界变得更好。

我在大约200ms内发送了20个请求,然后我尝试收到响应。 我希望在收到第一个回复后,我可以像发送请求一样快地收到回复,例如this graph

事实是,在我收到第一个回复之后,我必须等待大约300毫秒的每一个回复。与发送一个请求并收到一个响应相比,它没有任何好处。

为什么我不能缩短流水线技术的时间? 为什么S3为每个请求花费了这么多时间? S3是否支持HTTP流水线操作?

感谢。

2 个答案:

答案 0 :(得分:4)

Amazon S3提供并行化功能,以解决每个请求的延迟问题。

您可以向S3发出数百个并发请求,并在很短的时间内上传大批量文件。

答案 1 :(得分:1)

根据this Ubuntu bug report,S3中的HTTP流水线实现违反了HTTP / 1.1规范。