benchmarking - जो माप सही, Jmeter या अपाचे अब हो जाता है?




apachebench (2)

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

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

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

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

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

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

मैंने जेएमेटर में कुछ बुनियादी परीक्षण लिखना शुरू कर दिया था और यह हैरान था कि अपाचे अबू से उन लोगों की माप बहुत अलग है

मेरे पास एक इंटेल i7 सर्वर एनजीएक्स चलने वाला एक गीगाबिट लैन है और एक आई 5 टेस्ट मशीन जेएमेटर चल रहा है या अब शुरू में, मैं बस Nginx मुख पृष्ठ प्रतिक्रिया दर से बाहर के बॉक्स का परीक्षण कर रहा हूं।

ab -c 1 -n 100 http://testserver.local/

देता है

Document Path:          /
Document Length:        151 bytes

Concurrency Level:      1
Time taken for tests:   0.078 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      38400 bytes
HTML transferred:       15100 bytes
Requests per second:    1280.77 [#/sec] (mean)
Time per request:       0.781 [ms] (mean)
Time per request:       0.781 [ms] (mean, across all concurrent requests)
Transfer rate:          480.29 [Kbytes/sec] received

यह परिणाम लगातार प्रतिलिपि प्रस्तुत करने योग्य है, +/- कुछ प्रतिशत


जेएमेटर में, मेरे पास एक 1-उपयोगकर्ता 100-पाश धागा समूह है:

  • एक HTTP हेडर प्रबंधक सेटिंग स्वीकृत-एन्कोडिंग: gzip
  • एक HTTP प्राप्त / नमूना
  • एक सारांश रिपोर्ट श्रोता

केवल 100 नमूनों के साथ, यह हर बार जब मैं इसे चलाता हूं तो बेतहाशा असंगत परिणाम देता है। लेकिन सबसे चौंकाने वाली तथ्य यह है कि थ्रूपुट प्रति सेकंड 40 नें (1280 नहीं) के रूप में कम रिपोर्ट किया गया है। उच्चतम दर्ज की गई दर 1030 थी, और यह तब हासिल हुई जब मैं 10 हजार नमूनों में वृद्धि हुई।

क्या मैं यह सोचकर सही हूं कि जेएममीटर सरल लोड परीक्षणों के लिए गलत टूल है क्योंकि इसकी ऊपरी माप सटीक माप की अनुमति देने के लिए बहुत अधिक है?


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