सवाल आप वेब साइटों के लिए लोड परीक्षण और क्षमता योजना कैसे करते हैं?


यह है एक कैनोलिक सवाल वेब साइटों के लिए क्षमता योजना के बारे में।

सम्बंधित:

वेब साइट्स और वेब-अनुप्रयोगों के लिए क्षमता नियोजन के कुछ अनुशंसित टूल और विधियां क्या हैं?

कृपया अलग-अलग वेब-सर्वर, फ्रेमवर्क इत्यादि के साथ-साथ सर्वोत्तम रूप से वेब सर्वर पर लागू सर्वोत्तम अभ्यासों के लिए विभिन्न टूल और तकनीकों का वर्णन करने में संकोच न करें।


111
2018-01-16 22:49


मूल




जवाब:


संक्षिप्त जवाब यह है कि: आप को छोड़कर कोई भी इस प्रश्न का उत्तर नहीं दे सकता है।

लंबा जवाब यह है कि आपके विशिष्ट वर्कलोड को बेंचमार्क करना कुछ ऐसा है जो आपको स्वयं करने की आवश्यकता है, क्योंकि यह "स्ट्रिंग का एक टुकड़ा कितना समय है" पूछने जैसा है?

पेंटियम प्रो 150 पर एक साधारण एक-पेज स्थैतिक वेबसाइट होस्ट की जा सकती है और फिर भी हर दिन हजारों इंप्रेशन की सेवा करती है।

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

इसका एक संक्षिप्त अवलोकन है:

  • अपने परिदृश्य को जगह में रखें
  • निगरानी जोड़ें
  • यातायात जोड़ें
  • परिणाम का मूल्यांकन करें
  • परिणामों के आधार पर उपचार
  • कुल्ला, उचित रूप से खुश होने तक दोहराना

अपने परिदृश्य को जगह में रखें

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

अपने सर्वर, अकाउंट्स, वेबसाइट्स, बैंडविड्थ इत्यादि सेट अप करें। भले ही आप इसे वीएम पर करते हैं, ठीक है जब तक आप अपने परिणामों को स्केल करने के लिए तैयार नहीं होते हैं।

तो, मैं एक मध्यम संचालित आभासी मशीन (दो कोर, 512 एमबी रैम, 4 जीबी एचडीडी) स्थापित करने जा रहा हूं और अपना पसंदीदा लोड बैलेंसर स्थापित कर रहा हूं, haproxy के भीतर रेड हैट लिनक्स वीएम पर

मेरे पास लोड बैलेंसर के पीछे दो वेब सर्वर भी होने जा रहे हैं जिन्हें मैं लोड बैलेंसर का परीक्षण करने के लिए उपयोग करने जा रहा हूं। ये दो वेब सर्वर मेरे लाइव सिस्टम के समान रूप से स्थापित किए गए हैं।

निगरानी जोड़ें

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

मैं रैम, सीपीयू और डिस्क उपयोग पर निगरानी रखने जा रहा हूं haproxy यह सुनिश्चित करने के लिए कि लोड बैलेंसर कनेक्शन को संभाल सकता है।

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

कुछ चीजें जिन्हें आप हमेशा निगरानी करना चाहते हैं:

  • सि पि यु का उपयोग
  • राम उपयोग
  • डिस्क उपयोग
  • डिस्क विलंबता
  • नेटवर्क उपयोग

आप जो विशेष रूप से परीक्षण कर रहे हैं उसके आधार पर आप एसक्यूएल डेडलॉक्स, समय तलाशना आदि चुन सकते हैं।

यातायात जोड़ें

यह वह जगह है जहां चीजें मजेदार होती हैं। अब आपको एक टेस्ट लोड अनुकरण करने की जरूरत है। वहां बहुत सारे उपकरण यह कॉन्फ़िगर करने योग्य विकल्पों के साथ ऐसा कर सकता है:

कोई संख्या, कोई संख्या चुनें। मान लीजिए कि आप यह देखने जा रहे हैं कि सिस्टम एक मिनट में 10,000 हिट के साथ कैसे प्रतिक्रिया करता है। इससे कोई फ़र्क नहीं पड़ता कि आप किस नंबर को चुनते हैं क्योंकि आप इस चरण को कई बार दोहराने जा रहे हैं, यह देखने के लिए कि सिस्टम कैसा प्रतिक्रिया देता है, उस संख्या को ऊपर या नीचे समायोजित करना।

आदर्श रूप में, आपको इन 10,000 अनुरोधों को एकाधिक लोड परीक्षण क्लाइंट / नोड्स पर वितरित करना चाहिए ताकि एक ग्राहक अनुरोधों की बाधा बन न सके। उदाहरण के लिए, जेएमटर रिमोट टेस्टिंग एक केंद्रीय इंटरफ़ेस प्रदान करता है जिसमें से कई क्लाइंट को नियंत्रित जेएमटर मशीन से लॉन्च किया जाता है।

जादू दबाएं चले जाओ बटन और अपने वेब सर्वर पिघला और दुर्घटना देखें।

परिणाम का मूल्यांकन करें

तो, अब आपको चरण 2 में एकत्रित अपने मीट्रिक पर वापस जाना होगा। आप देखते हैं कि 10,000 समवर्ती कनेक्शन के साथ, आपका haproxy बॉक्स मुश्किल से पसीना तोड़ रहा है, लेकिन दो वेब सर्वर के साथ प्रतिक्रिया समय पांच सेकंड से अधिक स्पर्श है। यह अच्छा नहीं है - याद रखें, आपका प्रतिक्रिया समय दो सेकंड के लिए लक्षित है। तो, हमें कुछ बदलाव करने की जरूरत है।

remediate

अब, आपको अपनी वेबसाइट को दो बार से अधिक गति से बढ़ाने की आवश्यकता है। तो आप जानते हैं कि आपको या तो स्केल अप करने या स्केल करने की आवश्यकता है।

बड़े पैमाने पर, बड़े वेब सर्वर, अधिक रैम, तेज डिस्क प्राप्त करें।

स्केल करने के लिए, अधिक सर्वर प्राप्त करें।

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

यदि आपने देखा कि प्रोसेसर परीक्षण के दौरान 100% पर बैठा था, तो शायद मौजूदा सर्वर पर दबाव कम करने के लिए आपको अतिरिक्त वेब सर्वर जोड़ने के लिए स्केल करना होगा।

कोई सामान्य अधिकार या गलत जवाब नहीं है, केवल आपके लिए क्या सही है। स्केलिंग करने का प्रयास करें, और यदि यह काम नहीं करता है, तो इसके बजाय स्केल आउट करें। या नहीं, यह आपके ऊपर और कुछ बॉक्स के बाहर सोच रहा है।

मान लें कि हम बाहर निकलने जा रहे हैं। तो मैं अपने दो वेब सर्वर क्लोन करने का फैसला करता हूं (वे वीएम हैं) और अब मेरे पास चार वेब सर्वर हैं।

कुल्ला, दोहराना

चरण 3 से फिर से शुरू करें। यदि आपको लगता है कि चीजें आपको अपेक्षित नहीं चल रही हैं (उदाहरण के लिए, हमने वेब सर्वर को दोगुना कर दिया है, लेकिन प्रतिक्रिया समय अभी भी दो सेकंड से अधिक है), फिर अन्य बाधाओं को देखें। उदाहरण के लिए, आपने वेब सर्वर को दोगुना कर दिया है, लेकिन अभी भी एक क्रैपी डेटाबेस सर्वर है। या, आपने अधिक वीएम क्लोन किए हैं, लेकिन क्योंकि वे एक ही भौतिक होस्ट पर हैं, आपने केवल सर्वर संसाधनों के लिए उच्च विवाद प्राप्त किया है।

फिर आप सिस्टम के अन्य हिस्सों का परीक्षण करने के लिए इस प्रक्रिया का उपयोग कर सकते हैं। लोड बैलेंसर को मारने के बजाय, वेब सर्वर को सीधे मारने का प्रयास करें, या एक SQL बेंचमार्किंग उपकरण का उपयोग कर SQL सर्वर


119
2018-04-29 14:05



यह लोड परीक्षण के लिए उत्कृष्ट है, लेकिन क्षमता योजना के बारे में कुछ नहीं कहता है। Google के स्केलेबल आर्किटेक्चर के बारे में कौन लिख सकता है, जिसे जल्दी ही कल्पना की गई थी, या कम और अधिक महंगी बक्से का उपयोग करने वाले विकल्प। - rleir


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

प्रदर्शन माप हमेशा के साथ किया जाता है पहर इकाइयों, के रूप में

  • वे उपयोगकर्ता हैं जिनके बारे में परवाह है
  • उन्हें ऊपर और नीचे बढ़ाया जा सकता है

% सीपीयू और आईओपीएस जैसी चीजें सिस्टम-विशिष्ट हैं, इसलिए जब आप सिस्टम की योजना बनाते हैं और इसे प्री-प्रोडक्शन में मापा जाता है, तो आप केवल उस समय के लिए "सरोगेट" के रूप में कार्य करने के लिए उनका उपयोग करते हैं।


9
2018-04-21 22:32





क्षमता योजना एक परेशानी जानवर है। यह कला जितना विज्ञान है (यदि निश्चित रूप से एक अंधेरा है)।

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

कोई दबाव नहीं...

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

सौभाग्य से, ऐसी एक किताब है: "क्षमता योजना की कला"


8





मार्क हैंडर्सन की पोस्ट पर विस्तार करने के लिए, मैं अपाचे को यह विशिष्ट लिख रहा हूं। उन्होंने जो कहा, उसे दोहराने के लिए, "संक्षिप्त जवाब यह है कि कोई भी आपको छोड़कर इस प्रश्न का उत्तर नहीं दे सकता।" इस उत्तर का पाठ मेरे उत्तर से एक के बारे में एक समान प्रश्न के लिए भारी उधार लिया गया है Drupal वेबसाइट के प्रदर्शन

Mod_Prefork के साथ अपाचे को कॉन्फ़िगर करना

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

तुम्हे करना चाहिए कभी नहीँ आउट-ऑफ-द-बॉक्स अपाचे कॉन्फ़िगरेशन का उपयोग करें। आपको हमेशा अपनी साइट पर अपाचे को ट्यून करने की आवश्यकता है। मुख्य अपाचे कॉन्फ़िगरेशन CentOS पर फ़ाइल पर स्थित है /etc/httpd/conf/httpd.conf, और उबंटू सिस्टम पर मुख्य अपाचे कॉन्फ़िगरेशन फ़ाइल आमतौर पर स्थित होती है /etc/apache2/apache2.conf। अतिरिक्त कॉन्फ़िगरेशन फ़ाइलों का उपयोग चीजों के लिए किया जाता है वर्चुअल होस्ट

बहुत सारे सॉफ़्टवेयर की तरह, अपाचे को एक विशिष्ट वेबसाइट की ज़रूरतों के अनुसार लचीला और अनुकूलित करने के लिए बनाया गया है। विभिन्न मल्टी प्रोसेसिंग मॉड्यूल हैं कि अपाचे को नेटवर्क पोर्ट से जुड़ने और अनुरोधों को स्वीकार करने और संसाधित करने के लिए कॉन्फ़िगर किया जा सकता है।

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

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

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


5



पूरी तरह से शीर्ष पर आधारित स्मृति उपयोग थोड़ा दोषपूर्ण है, कृपया f.e. की जांच करें। stackoverflow.com/questions/7880784/... इसके अतिरिक्त आप मेमोरी उपयोग के लिए शीर्ष के बजाय पायथन स्क्रिप्ट "ps_mem.py" का उपयोग करना चाहेंगे, या प्रक्रिया / प्रक्रिया के तहत प्रक्रिया से जुड़े निर्देशों का भी उपयोग कर सकते हैं - Dennis Nolte
पूरा उत्तर आपके द्वारा जोड़े गए नोट के कारण लायक है: "आपको कभी भी आउट-ऑफ-द-बॉक्स अपाचे कॉन्फ़िगरेशन का उपयोग नहीं करना चाहिए"। हम इसे कभी भी तनाव नहीं दे सकते। - ezra-s


इसके अलावा मैं आर्किटेक्ट्स और इंजीनियरों से बात करने का सुझाव दूंगा जिन्होंने बाधाओं, विफलता के एकल बिंदु और लाइसेंसिंग सीमाओं की पहचान करने के लिए अनुप्रयोगों का डिजाइन / निर्माण किया है।


0