2011-01-15 27 views
5

के लिए आवश्यक उदाहरणों की संख्या मैं विंडोज़ एज़ूर के लिए बिल्कुल नया हूं और एक सर्वेक्षण आवेदन होस्ट करना चाहता हूं जो अनुमोदन से भरा जाएगा। एक साथ 30,000 उपयोगकर्ता।विंडोज़ एज़ूर एप्लिकेशन

एप्लिकेशन में 1 .aspx पृष्ठ होता है जो एक बार ग्राहक को भेजा जाएगा, 25 प्रश्न पूछेगा और अंत में दिए गए उत्तरों का एक रैप-अप देगा। जब उपयोगकर्ता ने जवाब दिया है और 'अगला प्रश्न' बटन हिट करता है तो दिया गया उत्तर सर्वर पर .ashx हैंडलर के माध्यम से भेजा जाएगा। प्रतिक्रिया अगले प्रश्न और उत्तर है। पूर्ण पोस्टबैक के बाद रैप-अप क्लाइंट को भेजा जाता है। उत्तर एक Azure तालिका में सहेजा गया है जिसे विभाजित किया गया है ताकि प्रत्येक विभाजन अधिकतम 450 उपयोगकर्ताओं को पकड़ सके।

मैं यह पूछना चाहूंगा कि कोई इस अनुमान को अनुमान लगा सकता है कि इस एप्लिकेशन को चलाने के लिए हमें कितने वेब-रोल उदाहरण शुरू करने की आवश्यकता है। (यदि यह कहना मुश्किल है, तो क्या 5, 50 या 500 उदाहरण शुरू होने की संभावना अधिक है?)

जाने का बेहतर तरीका क्या है: 20 छोटे उदाहरण या 5 बड़े उदाहरण?

आपकी मदद के लिए धन्यवाद!

उत्तर

5

सबसे स्पष्ट उत्तर: आपको स्वयं परीक्षण करके सबसे अच्छा सेवा दी जाएगी और देखें कि आपका एप्लिकेशन कैसा रहता है। आप Windows Azure से आसानी से प्रदर्शन काउंटर और अन्य डायग्नोस्टिक्स प्राप्त कर सकते हैं; उदाहरण के लिए, आप परीक्षण के दौरान अपने पर्यावरण की निगरानी के लिए माइक्रोसॉफ्ट एससीओएम (सिस्टम सेंटर ऑपरेशंस मैनेजर) से कनेक्ट कर सकते हैं। Site Hammer विंडोज़ एज़ूर (एमएसडीएन कोड गैलरी पर) के लिए एक साधारण लोड परीक्षण उपकरण है।

इस बहुत स्पष्ट उत्तर के अलावा, मैं कुछ guesstimates साझा करेंगे: लोड के प्रकार के रूप में, आप शायद कम संख्या के विरोध के रूप में अधिक छोटे उदाहरणों के साथ बेहतर हैं, खासकर जब से आपके पास पहले से ही आपके संग्रहण को विभाजित किया गया है । यदि आप वास्तव में 30K विज़िटर एक साथ होने जा रहे हैं और & प्रश्नों को पढ़ने के बीच उन्हें ~ 15 सेकंड अंतराल देने के लिए उत्तर देते हैं तो आप प्रति सेकंड 2,000 अनुरोध देख रहे हैं। उस लोड को संभालने के लिए 10 नोड्स पर्याप्त से अधिक होना चाहिए। याद रखें कि यह एक साधारण अनुमान है, आपके वास्तुकला में अंतर्दृष्टि का कोई भी रूप नहीं है, आदि। इन प्रकार के भारों के लिए, कैशिंग एक बहुत अच्छा विचार है; यह प्रत्येक नोड को संभालने वाले भार को नाटकीय रूप से बढ़ाएगा।

हालांकि, सबसे अच्छी सलाह जो मैं आपको दे सकता हूं यह सुनिश्चित करना है कि आप सक्रिय रूप से निगरानी कर रहे हैं। अतिरिक्त उदाहरणों को स्पिन करने में 30 मिनट से भी कम समय लगता है, इसलिए यदि आप अपने पर्यावरण की निगरानी करते हैं और/या यह सुनिश्चित करते हैं कि जब भी आपको चकना शुरू होता है तो आपको अधिसूचित किया जाता है, तो आप आसानी से अपना सेटअप अपग्रेड कर सकते हैं। ध्यान रखें कि आपको 20 से अधिक उदाहरणों में जाने में सक्षम होने के लिए ग्राहक सहायता से संपर्क करने की आवश्यकता है (यह एक डिफ़ॉल्ट सीमा है, जो आपको अधिक खर्च से बचाने के लिए है)।

+0

हाय तिजमेन, आपकी टिप्पणियों के लिए धन्यवाद। हमने परीक्षणों को लोड करना शुरू किया लेकिन चूंकि मैं इस विषय के लिए नया हूं, इसलिए पहिया को फिर से शुरू करने की कोशिश करना हमेशा अच्छा होता है ... सर्वेक्षण कुछ अलग है: सभी 30,000 आगंतुक एक शो देख रहे हैं और एक ही समय में प्रश्न का उत्तर देंगे । यह प्रति सेकंड अनुरोधों को अनुमानित 10.000 तक बढ़ाएगा। हम कैशिंग, सिंगलटन कक्षाओं का उपयोग करते हैं और इस पल में समाधान को अनुकूलित कर रहे हैं ताकि इसे यथासंभव दुबला बना दिया जा सके। हम तुरंत निगरानी और संसाधनों को जोड़ देंगे! –

+0

इस प्रकार के थ्रूपुट के लिए, एज़ूर कतार में सीधे एज़ूर टेबल में लिखने के बीच प्रदर्शन अंतर को देखें ... कतार तेज होनी चाहिए, आपको कुछ पेर्फ मिल सकता है। आपको कतार में डेटा को संसाधित करने के लिए एक कार्यकर्ता भूमिका लिखने की आवश्यकता है, लेकिन यह परफ-महत्वपूर्ण पथ पर नहीं है। समाधान के बावजूद, सुनिश्चित करें कि आप सभी हिट (और औसत नहीं) के लिए अनुरोध निष्पादन समय की समीक्षा करते हैं, यह सुनिश्चित करने के लिए कि औसत मूल्यों पर दिखाए बिना ~ 10% हिट बहुत लंबे समय तक नहीं लेते हैं। – tijmenvdk

2

ऋषि सलाह के अलावा tijmenvdk ने आपको दिया, मुझे उदाहरण के आकार पर अपनी राय जोड़ने दें। आम तौर पर, सबसे छोटे आकार के साथ जाएं जो आपके ऐप का समर्थन करेगा, और उसके बाद बढ़े हुए यातायात को संभालने के लिए स्केल करें। इस तरह, जब आप वापस स्केल करते हैं, तो आपकी न्यूनतम गणना लागत कम रखी जाती है। यदि आप दौड़ते हैं, तो कहें, आपकी आधार रेखा के रूप में अतिरिक्त-बड़े उदाहरणों की एक जोड़ी (चूंकि आप हमेशा अपटाइम एसएलए प्राप्त करने के लिए न्यूनतम दो उदाहरण चाहते हैं), आपकी लागत पदचिह्न 0.12 x 8 x 2 = $ 1.92 प्रति घंटा से शुरू होता है, यहां तक ​​कि निम्न- यातायात के समय। यदि आप छोटे उदाहरणों के साथ जाते हैं, तो आप प्रति घंटे 0.12 x 1 x 2 = $ 0.24 पर होंगे।

जुड़े सीपीयू, स्मृति, और स्थानीय 9non-टिकाऊ) डिस्क भंडारण के रूप में प्रत्येक वीएम आकार, इसलिए सबसे छोटा आकार इकाई आप अपने ऐप्लिकेशन में कुशलता से काम करता है लेने।

लोड/प्रदर्शन के परीक्षण के लिए, आप भी चाहते हो सकता है Loadstorm जैसे होस्ट किए गए समाधान पर विचार करें।

+0

हाय डेविड, सलाह के लिए धन्यवाद। चूंकि हमारे पास केवल एक साधारण तालिका है जिसमें हम उत्तर, एक .aspx पृष्ठ और एक .ashx आइटम संग्रहीत करते हैं, मुझे लगता है कि हम वास्तव में छोटे उदाहरणों के लिए सबसे अच्छे तरीके से जा सकते हैं। –

0

वास्तविकता में अनुरोध कैसे एक साथ हैं? क्या वे सभी एक ही समय में पता टाइप करेंगे?

यह कहा गया है कि, अपने ऐप को स्थानीय रूप से प्रोफाइल करें, इससे आपको एज़ूर पर सीपीयू, नेटवर्क और मेमोरी उपयोग का अनुमान लगाने में मदद मिलेगी। फिर, आपको कितने उदाहरणों की आवश्यकता है, यह देखने के बजाय, आप आवश्यकता को कैसे कम कर सकते हैं! इन युक्तियों को लागू करें, और स्थानीय रूप से फिर से प्रोफाइल करें।

अधिकांश प्रदर्शन युक्तियों में सीपीयू, मेमोरी या बैंडविड्थ उपयोग के बीच एक व्यापार है, यह विचार यह सुनिश्चित करना है कि वे समान रूप से स्केल करें। यदि आप मेमोरी से बाहर हो जाते हैं, लेकिन आपके पास सीपीयू और नेटवर्क का भार नहीं है, तो

एक पृष्ठ सर्वेक्षण के लिए, अपने एचटीएमएल, सीएसएस & जेएस को कम किया गया है, इसकी कैशबल सुनिश्चित करें।

यदि संभव हो तो उन्हें संयोजित करें, और वास्तव में स्केल करने योग्य होने के लिए, स्थिर फ़ाइलों को धक्का दें (सीएसएस, जेएस छवियां) एक सीडीएन में। यह सब वेबसर्वर से निपटने के अनुरोधों की संख्या को कम कर देता है, और इसलिए आपको आवश्यक कमर की संख्या को कम कर देता है = कम नेटवर्क।

एशक्स प्रतिक्रिया कैसे लौटाता है? यानी यह एचटीएमएल, एक्सएमएल या जेसन भेज रहा है? व्यक्तिगत रूप से, मैं इसे JSON वापस करने के लिए प्राप्त करूंगा, क्योंकि इसके लिए कम नेटवर्क बैंडविड्थ की आवश्यकता होगी, और संभवतः कम सर्वर साइड प्रसंस्करण = कम ज्ञापन और नेटवर्क की आवश्यकता होगी।

उपयोग asyncronous एपीआई नीला भंडारण (इस अधिक अनुरोधों को हैंडल करने तक नीला भंडारण वापस आता है आईआईएस धागा को मुक्त करने के आईओ पूरा होने के बंदरगाहों का उपयोग करता = पैमाने पर करने के सीपीयू में सक्षम है)

tijmenvdk पहले से ही लिखने के लिए कतारों का उपयोग कर उल्लेख किया है तक पहुँचने के लिए । क्या प्रश्नों की सूची बदलती है? यदि नहीं, तो उन्हें कैश करें, ताकि ऐप को स्टार्ट-अप पर केवल एक बार टेबल स्टोरेज से पढ़ना पड़े और एक बार अंतिम क्लाइंट-अप के लिए प्रत्येक क्लाइंट के लिए = स्मृति की कीमत पर नेटवर्क और सीपीयू बचाता है।

ये सभी युक्तियां एक सामान्य वेब अनुप्रयोग पर, एक सर्वर या वेब-फार्म वातावरण पर समान रूप से लागू होती हैं।

जिस बिंदु को मैं बनाने की कोशिश कर रहा हूं वह यह है कि आप क्या माप नहीं सकते हैं, आप सुधार नहीं कर सकते, माप, सुधार और लागत सभी हाथों में हाथ में ले सकते हैं। गतिशील स्केलिंग लागत को कम कर देगी, लेकिन मूल रूप से यदि आपके एप्लिकेशन को माप नहीं लिया गया है और संसाधन उपयोग अनुकूलित किया गया है, तो पूछें कि आपको कितने उदाहरणों की आवश्यकता है व्यर्थ है।