2013-09-03 5 views
5

मेरे Azure क्लाउड सेवा पढ़ता है और नेट भंडारण पुस्तकालय (1.7) का उपयोग कर धब्बे को लिखता है। ब्लॉब्स सेवा के समान डाटा सेंटर में हैं। मेरे पहले कंटेनर में, ऑपरेशन तेज़ होते हैं (10ms का क्रम)। मेरे दूसरे कंटेनर में वे बहुत धीमे होते हैं (आमतौर पर लगभग 2 एस या 14 एस, बीच में ज्यादा नहीं)। दोनों CloudBlob.DownloadToStream() को मेमोरीस्ट्रीम में डेटा का उपयोग कर स्थानांतरित कर रहे हैं। फ़ाइल आकार आमतौर पर 100kB से कम होते हैं।अकसर-पहुंच वाले Azure ब्लॉब स्टोरेज को धीमा क्यों किया जाता है?

अब मैं मानता हूं कि मैंने उपरोक्त सभी को प्रदर्शित करने में सक्षम होने के लिए उचित परीक्षण स्थापित नहीं किया है - मैं बस अपनी लॉग फाइलों से जा रहा हूं, इसलिए ब्लॉब्स तक पहुंचने के तरीके में कुछ सूक्ष्म अंतर हो सकता है । क्षमा करें अगर यह मामला सामने आता है।

  • तेजी से कंटेनर अक्सर एक्सेस किया जाता है, और धीमी गति से कंटेनर (प्रतिदिन अनुरोध हजारों की संख्या में) काफी बार बार (शायद 200 अनुरोध:

    वैसे भी, इन दो कंटेनरों के बीच केवल प्रासंगिक अंतर प्रतीत हो रहा है हर दिन)।

  • तेजी से कंटेनर आम तौर पर आइटम है कि जल्द ही बाद में दिलवाया जाता है संग्रहीत करता है। धीमी कंटेनर अक्सर उन चीज़ों को लोड कर रहा है जो दिन पहले संग्रहीत हो सकते थे।

प्रश्न: किन कारणों से बार बार-पहुँचा धब्बे के लिए ब्लॉब प्रदर्शन पर असर पड़ेगा? इसे तेजी से बनाने के लिए मैं क्या कर सकता हूं?

(मुझे नहीं पता कि कैसे एज़ूर ब्लॉब स्टोरेज लागू किया गया है, लेकिन उपरोक्त के आधार पर मुझे लगता है कि डेटा को भंडारण सरणी में सहेजा गया है और वीएम के गतिशील रूप से स्केलिंग संग्रह के माध्यम से पहुंचाया गया है, जिनमें से प्रत्येक धब्बे के नि: स्मृति कैशिंग लागू करता है। इस प्रकार ~ 14s देरी होती है जब Azure यह VMs ऊपर स्पिन। ~ 2s देरी होती है जब एक वीएम उपलब्ध है की जरूरत है पाता है, लेकिन यह एक भौतिक डिस्क पर डेटा नीचे का शिकार करने की जरूरत है (लगता है बल्कि धीमी), और 10 एमएमएस विलंब तब होता है जब आइटम को इन-मेमोरी कैश में संग्रहीत किया जाता है, या ऐसा कुछ।)

+0

यहां 2015 में, 2s या 14s की तरह, और कभी-कभी 45 से नीचे। लेकिन मैंने कुछ भी नहीं किया है। –

उत्तर

5

विंडोज़ एज़ूर स्टोरेज आर्किटेक्टेड नहीं है कि आप कैसे वर्णन कर रहे हैं (कैश वीएम की विस्तृत संख्या के साथ) , इसलिए कुछ डेटा कैश किए जाने और एज़ूर स्टोरेज सर्व पर कैश किए जाने वाले अन्य डेटा का कोई प्रभाव नहीं पड़ेगा एर साइड गहन अवलोकन एक और अधिक के लिए एक अच्छा अवलोकन के लिए Windows Azure Storage Architecture Overview, या SOSP Paper - Windows Azure Storage: A Highly Available Cloud Storage Service with Strong Consistency देखें।

निर्धारित करने के लिए क्यों अपनी ब्लॉब अनुरोध धीमी कर रहे हैं, ऐसा करने के लिए पहली बात यह है कि अगर धीमा प्रदर्शन सर्वर साइड या क्लाइंट पक्ष है निर्धारित करने के लिए किया जाएगा। सौभाग्य से Azure संग्रहण स्टोरेज Analytics (Windows Azure Storage Logging: Using Logs to Track Storage Requests) के माध्यम से यह आसान बनाता है - बस एंड टू विलंबता और सर्वर लेटेंसी की तुलना करें। मुझे संदेह है कि आप दो चीजों में से एक देखेंगे:

  1. कम ई 2 ई और निम्न सर्वर। यह इंगित करेगा कि या तो अनुरोध क्लाइंट से भेजे जाने में देरी हो रही है (यानी पर्याप्त कार्यकर्ता धागे नहीं), या आपका लॉगिंग गलत डेटा प्रदान कर रहा है।
  2. उच्च E2E और कम सर्वर। यह अनुरोध को संसाधित करने में ग्राहक पक्ष पर एक समस्या का संकेत देगा (प्रतिक्रिया को संसाधित करने के लिए पर्याप्त कार्यकर्ता धागे नहीं, स्मृति स्ट्रीम की धीमी प्रसंस्करण आदि)।
+0

लॉगिंग ने कम E2E दिखाया (अंत तक, नेटवर्क समय शामिल है) और कम सर्वर समय दिखाया गया। इसलिए मुझे अपने कोड पर कड़ी मेहनत करने की ज़रूरत है। मैंने एक नया प्रोग्राम बनाने की आवश्यकता के बिना लॉगिंग चालू करने के लिए स्मारक्स के टूल (http://storageanalytics.cloudapp.net/) का उपयोग किया। –

+1

ओलिवर, एक और चीज जिसे आप देखना चाहते हैं वह नया 2 है।स्टोरेज क्लाइंट लाइब्रेरी का 1 संस्करण जो एससीएल के ट्रेसिंग आउटपुट को जोड़ता है - http://blogs.msdn.com/b/windowsazurestorage/archive/2013/07/12/introducing-storage-client-library-2-1- आर सी के लिए शुद्ध और windows-फोन-8.aspx। – kwill

+0

मैंने DownloadToStream() पर कॉल के चारों ओर स्टॉपवॉच लगाया है और मैं अभी भी क्लाइंट एंड पर धीमापन देख रहा हूं। मुझे लगता है कि धीमे कॉल एक प्रारंभिक प्रक्रिया में किए जाते हैं। क्या यह प्रभाव हो सकता है? दुर्भाग्यवश मैं नई स्टोरेज क्लाइंट लाइब्रेरी का उपयोग नहीं कर सकता क्योंकि प्रश्नों की प्रक्रिया निर्भरता के कारण .NET 2.0 में फंस गई है, और नई लाइब्रेरी की आवश्यकता है .Net 4. –

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