2011-10-13 88 views
6

我有数千个小文件(大约1 KB)每分钟上传到S3。 如果我上传循环中的每个文件 “发送我的HTTP请求 - 等待S3的HTTP响应 - 发送下一个请求 - 等待下一个响应...”, 它花费很多时间,因为我必须等待S3之间的等待时间2倍和我的服务器。 当然,我已经使用HTTP Keep-Alive头。S3是否支持HTTP流水线?

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

但是,它并没有让世界变得更好。

我在200ms左右发送了20个请求,然后我尝试收到回复。 我希望在收到第一个响应之后,我可以收到与发送请求一样快的响应,例如this graph

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

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

谢谢。

回答

4

Amazon S3运动并行化来解决每个请求的延迟问题。

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