2011-10-13 38 views
6

Tôi có hàng ngàn tệp nhỏ (khoảng 1 KB) để tải lên S3 mỗi phút. Nếu tôi tải lên mọi tệp trong vòng lặp "gửi yêu cầu HTTP của tôi - đợi phản hồi HTTP của S3 - gửi yêu cầu tiếp theo - chờ phản hồi tiếp theo ...", mất nhiều thời gian vì tôi phải chờ 2 lần trễ giữa S3 và máy chủ của tôi. Tất nhiên tôi đã sử dụng tiêu đề HTTP Keep-Alive.S3 có hỗ trợ HTTP pipelining không?

Vì vậy, tôi cố gắng gửi nhiều yêu cầu HTTP mà không cần chờ đường dẫn HTTP tương ứng. Tôi cố gắng gửi 20 yêu cầu trong một đợt và đợi 20 câu trả lời. Tôi hy vọng điều này có thể tiết kiệm nhiều thời gian bởi vì tôi vẫn có thể gửi yêu cầu khi phản hồi trước đó trên đường đi.

Tuy nhiên, nó không làm cho thế giới tốt hơn.

Tôi gửi 20 yêu cầu của mình trong khoảng 200ms, sau đó tôi cố gắng nhận phản hồi. Tôi dự kiến ​​tôi có thể nhận được phản hồi nhanh như tôi gửi yêu cầu sau khi tôi nhận được phản hồi đầu tiên, như this graph.

Sự thật là sau khi tôi nhận được phản hồi đầu tiên, tôi phải chờ khoảng 300ms cho mỗi câu trả lời. Nó không nhận được bất kỳ tốt hơn so sánh để gửi một yêu cầu và nhận được một phản ứng.

Tại sao tôi không thể rút ngắn thời gian cho kỹ thuật pipelining? Tại sao S3 tốn quá nhiều thời gian cho mọi yêu cầu? S3 có hỗ trợ HTTP pipelining không?

Cảm ơn.

Trả lời

4

Tương thích thể thao Amazon S3 để giải quyết vấn đề độ trễ cho mỗi yêu cầu.

Bạn có thể tạo hàng trăm yêu cầu đồng thời tới S3 và tải lên hàng loạt tệp lớn trong một khoảng thời gian rất ngắn.

Các vấn đề liên quan