2011-10-13 12 views
6

मेरे पास हर मिनट S3 पर अपलोड करने के लिए हजारों छोटी फ़ाइलें (लगभग 1 KB) हैं। यदि मैं लूप में प्रत्येक फ़ाइल अपलोड करता हूं "मेरा HTTP अनुरोध भेजें - S3 की HTTP प्रतिक्रिया प्रतीक्षा करें - अगला अनुरोध भेजें - अगली प्रतिक्रिया प्रतीक्षा करें ...", इसमें बहुत समय लगता है क्योंकि मुझे S3 के बीच विलंबता के 2 गुना इंतजार करना है और मेरा सर्वर। बेशक मैं पहले से ही HTTP Keep-Alive शीर्षलेख का उपयोग करता हूं।क्या एस 3 HTTP पाइपलाइनिंग का समर्थन करता है?

तो मैं संबंधित (HTTP पाइपलाइनिंग) के इंतजार किए बिना एकाधिक HTTP अनुरोध भेजने की कोशिश करता हूं। मैं बैच में 20 अनुरोध भेजने की कोशिश करता हूं और 20 प्रतिक्रिया का इंतजार करता हूं। मुझे उम्मीद है कि यह अधिक समय बचा सकता है क्योंकि मैं अभी भी अनुरोध पर भेज रहा हूं जब रास्ते पर पिछली प्रतिक्रिया।

हालांकि, यह दुनिया को बेहतर नहीं बनाता है।

मैं अपने 20 अनुरोध लगभग 200ms में भेजता हूं, फिर मैं प्रतिक्रिया प्राप्त करने का प्रयास करता हूं। मुझे उम्मीद है कि मैं प्रतिक्रिया प्राप्त कर सकता हूं क्योंकि मैं पहली प्रतिक्रिया प्राप्त करने के बाद अनुरोध भेजता हूं, जैसे this graph

तथ्य यह है कि मुझे पहली प्रतिक्रिया मिलने के बाद, मुझे प्रत्येक प्रतिक्रिया के लिए 300ms इंतजार करना होगा। यह एक अनुरोध भेजने और एक प्रतिक्रिया प्राप्त करने के लिए कोई बेहतर तुलना नहीं करता है।

मैं पाइपलाइनिंग तकनीक के लिए समय क्यों छोटा नहीं कर सकता? क्यों S3 को हर अनुरोध के लिए इतना समय लगता है? क्या एस 3 HTTP पाइपलाइनिंग का समर्थन करता है?

धन्यवाद।

उत्तर

4

प्रत्येक अनुरोध के लिए विलंबता मुद्दे के आसपास अमेज़ॅन एस 3 खेल समांतरता।

आप एस 3 के सैकड़ों समवर्ती अनुरोध कर सकते हैं और बहुत ही कम समय अवधि में फ़ाइलों के बड़े बैच अपलोड कर सकते हैं।

2

this Ubuntu bug report के अनुसार, एस 3 में HTTP पाइपलाइनिंग कार्यान्वयन HTTP/1.1 spec का उल्लंघन करता है।

संबंधित मुद्दे