5

यह एक कठिन सवाल है जिसे मुझे दूसरे दिन पूछा गया था ... हम मिश्रित सी ++ और PHP कोड को MySQL डेटाबेस और कई ओपन सोर्स घटकों के साथ एक जटिल जटिल टेलीफोनी (एसआईपी) एप्लिकेशन पर काम कर रहे हैं।क्या आप परीक्षण से पहले किसी एप्लिकेशन के प्रदर्शन का अनुमान लगा सकते हैं?

एक दूरसंचार इंजीनियर ने हमें एप्लिकेशन के प्रदर्शन का अनुमान लगाने के लिए कहा (जो अभी तक तैयार नहीं है)। वह 'अच्छी तरह से चला गया, आप जानते हैं कि प्रति सेकंड लिनक्स कर्नेल के माध्यम से कितने पैकेट गुजर सकते हैं, साथ ही आप जान सकते हैं कि आपका ऐप कितना तेज़ है, इसलिए मुझे बताएं कि प्रति सेकंड आपकी सामग्री कितनी कॉल गुजरती है'।

, मेरे लिए बकवास लगता है के रूप में एक लाख परिदृश्यों कि हो सकता है (अच्छी तरह से, सचमुच ...)

देखते हैं (हार्डवेयर उस पर चलेंगे जानने हालांकि ... वहाँ आवेदन प्रदर्शन का अनुमान लगाने के लिए एक रास्ता है , वास्तविक परीक्षण से पहले मानक बेंचमार्क, आदि चलाने में सक्षम होने के नाते)?

उत्तर

6

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

आप स्वयं समस्या के माध्यम से काम कर सकते हैं - एक लेनदेन के लिए आपको "न्यूनतम" काम करना है या आपके ऐप में जो भी कार्य है, वह क्या है?

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

संपादित

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

मैं सबसे खराब केस विश्लेषण को अनदेखा कर रहा हूं - जैसा कि आप इंगित करते हैं - काफी कठिन है।

2

आप वास्तव में इस जवाब देने के लिए है, तो आप कह सकते हैं कुछ इस तरह:

"मैं अपने सिर के ऊपर से पता नहीं मैं कर रहा हूँ आप के लिए यह अनुमान लगाने के लिए होगा, लेकिन यह समय लगेगा जाहिर है।। मेरे उत्तर की सटीकता इस बात पर निर्भर करती है कि मैंने अपने अनुमान की गणना करने के लिए कितना प्रयास (आईई टाइम) रखा है। मुझे अपने अनुमान की गणना करने में कितना समय लगाया जाना चाहिए? "

बोझ उन्हें वापस रखो। यदि वे वास्तव में एक सटीक उत्तर चाहते हैं, तो उन्हें आपको कम से कम कुछ परीक्षण अनुप्रयोगों का निर्माण करने की आवश्यकता होगी जो वास्तविक वातावरण को अनुकरण कर सकें।

1

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

याद रखें: प्रोटोटाइप व्यापक हैं, स्पाइक्स गहरे हैं।

0

यह कुछ डोमेन में सत्य है, लेकिन जब तक कि आप उस डोमेन में विशेषज्ञ नहीं हैं तब तक आपको कोई विचार नहीं है। उदाहरण के लिए मैं औद्योगिक रोबोटों को नियंत्रित करने के लिए कोड लिखता हूं।गति रोबोट गति से सीमित है, कोड की निष्पादन गति से नहीं। यह जानकर कि रोबोट कितनी तेजी से है और इसे कितना दूर जाना है, हम "गति" के काफी अच्छे अनुमान बना सकते हैं। मुझे नहीं पता होगा कि आपके आवेदन के लिए समय का आकलन कैसे करें।

3

Capacity Planning for Web Performance: Metrics, Models, and Methods देखें। वहाँ भी कुछ उपकरण है कि असतत घटना सिमुलेशन की इस तरह कर सकते हैं:

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

गुड लक :)

1

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

सबसे अच्छा अनुमान है कि परीक्षण में सिस्टम का निर्माण, अनुरूपित वर्कलोड चलाएं, फिर प्रदर्शन आवश्यकताओं और वर्कलोड के कार्य के रूप में क्षमता की भविष्यवाणी करें। ये 3 प्रपत्र एक भविष्यवाणी अंतरिक्ष - 3 में से 2 को देखते हुए, आप तीसरे भविष्यवाणी कर सकते हैं:

  1. को देखते हुए प्रदर्शन की आवश्यकताओं और क्षमता (अर्थात हार्डवेयर) आप काम का बोझ आप संभाल कर सकते हैं गणना कर सकते हैं।

  2. प्रदर्शन आवश्यकताओं और वर्कलोड को देखते हुए, आप जिस क्षमता की आवश्यकता है (यानी हार्डवेयर) की गणना कर सकते हैं।

  3. वर्कलोड और क्षमता को देखते हुए, आप अपने अपेक्षित प्रदर्शन की भविष्यवाणी कर सकते हैं।

1

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

इसके बारे में सोचने में कुछ समय बिताएं। महत्वपूर्ण उपयोग मामलों का विश्लेषण करें। आपको जिस स्मृति की आवश्यकता हो, उसके बारे में सोचें; डेटाबेस पहुंच के बारे में सोचें; नेटवर्क पहुंच (स्थानीय और दूरस्थ) के बारे में सोचें। ये आपके सिस्टम के प्रदर्शन को प्रभावित करेंगे। ऐसा करने के लिए पूरी टीम को एक साथ प्राप्त करें।

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

परिणाम: सिस्टम परीक्षण में कम ग़लत आश्चर्य। रिलीज की तारीख कम होने के रूप में कम दहशत।

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

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