अपाचे बेंच - पर्यावरण सेटअप

इस अध्याय में, हम आपको अपने VPS पर अपाचे बेंच के लिए अपना वातावरण सेट करने का तरीका बताएंगे।

व्यवस्था की आवश्यकता

  • Memory - 128 एमबी

  • Disk Space - कोई न्यूनतम आवश्यकता नहीं

  • Operating System - कोई न्यूनतम आवश्यकता नहीं

अपाचे बेंच स्थापित करना

अपाचे बेंच एक स्टैंड-अलोन एप्लिकेशन है, और अपाचे वेब सर्वर की स्थापना पर कोई निर्भरता नहीं है। अपाचे बेंच स्थापित करने के लिए निम्नलिखित दो चरण की प्रक्रिया है।

Step 1 - अद्यतन पैकेज डेटाबेस।

# apt-get update

कृपया ध्यान दें कि टर्मिनल कमांड से पहले प्रतीक # का मतलब है कि रूट उपयोगकर्ता उस कमांड को जारी कर रहा है।

Step 2 - Apache बेंच तक पहुँचने के लिए apache2 utils पैकेज स्थापित करें।

# apt-get install apache2-utils

अब अपाचे बेंच लगाई गई है। यदि आप एक ही वीपीएस पर होस्ट किए गए वेब एप्लिकेशन का परीक्षण करना चाहते हैं, तो यह केवल अपाचे वेब सर्वर को स्थापित करने के लिए पर्याप्त है -

# apt-get install apache2

अपाचे उपयोगिता होने के नाते, अपाचे बेंच स्वचालित रूप से अपाचे वेब सर्वर की स्थापना पर स्थापित है।

अपाचे बेंच स्थापना का सत्यापन

आइए अब देखते हैं कि अपाचे बेंच स्थापना को कैसे सत्यापित किया जाए। निम्नलिखित कोड स्थापना को सत्यापित करने में मदद करेगा -

# ab -V

Output

This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

जब आप उपरोक्त टर्मिनल आउटपुट देखते हैं, तो इसका मतलब है कि आपने अपाचे बेंच को सफलतापूर्वक स्थापित किया है।

एक विशेषाधिकार प्राप्त सूद उपयोगकर्ता बनाना

सुरक्षा के दृष्टिकोण से, सिस्टम एडमिनिस्ट्रेटर के लिए यह आवश्यक है कि वे रूट के रूप में काम करने के बजाय एक sudo उपयोगकर्ता बनाएं। हम इस उद्देश्य के लिए एक परीक्षण उपयोगकर्ता नाम परीक्षण का निर्माण करेंगे -

# useradd -m -d /home/test -g sudo test

आइए हम नए उपयोगकर्ता के लिए पासवर्ड सेट करें -

# passwd test

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

Output

Enter new UNIX password:
Retype new UNIX password:   
passwd: password updated successfully

परीक्षण Apache.org वेबसाइट

इस भाग में, हम Apache.org वेबसाइट का परीक्षण करेंगे। आइये पहले हम sudo यूजर टेस्ट में स्विच करते हैं -

# su test

शुरू करने के लिए, हम Apache संगठन की वेबसाइट का परीक्षण करेंगे, https://www.apache.org/। हम पहले कमांड चलाएंगे, और फिर आउटपुट को समझेंगे -

$ ab -n 100 -c 10 https://www.apache.org/

यहाँ -nबेंचमार्किंग सत्र के लिए प्रदर्शन करने के लिए अनुरोधों की संख्या है। डिफ़ॉल्ट बस एक ही अनुरोध करना है जो आमतौर पर गैर-प्रतिनिधि बेंचमार्किंग परिणामों की ओर जाता है।

तथा -cएक समसामयिक है और एक बार में प्रदर्शन करने के लिए कई अनुरोधों की संख्या को दर्शाता है। डिफ़ॉल्ट एक समय में एक अनुरोध है।

इसलिए इस परीक्षण में, अपाचे बेंच अपाचे संगठन सर्वर के लिए संगामिति 10 के साथ 100 अनुरोध करेगी।

Output

This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.apache.org (be patient).....done

Server Software:        Apache/2.4.7
Server Hostname:        www.apache.org
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256

Document Path:          /
Document Length:        58769 bytes

Concurrency Level:      10
Time taken for tests:   1.004 seconds
Complete requests:      100
Failed requests:        0
Total transferred:      5911100 bytes
HTML transferred:       5876900 bytes
Requests per second:    99.56 [#/sec] (mean)
Time per request:       100.444 [ms] (mean)
Time per request:       10.044 [ms] (mean, across all concurrent requests)
Transfer rate:          5747.06 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       39   46  30.9     41     263
Processing:    37   40  21.7     38     255
Waiting:       12   15  21.7     13     230
Total:         77   86  37.5     79     301

Percentage of the requests served within a certain time (ms)
  50%     79
  66%     79
  75%     80
  80%     80
  90%     82
  95%     84
  98%    296
  99%    301
 100%    301 (longest request)

अपना पहला परीक्षण चलाने के बाद, इस आदेश के लिए उपयोग के पैटर्न को पहचानना आसान होगा जो इस प्रकार है -

# ab [options .....]  URL

कहाँ पे,

  • ab - अपाचे बेंच कमांड

  • options - विशेष कार्य के लिए झंडे जो हम प्रदर्शन करना चाहते हैं

  • URL - पथ url हम परीक्षण करना चाहते हैं

आउटपुट मान को समझना

Ab द्वारा लौटाए गए विभिन्न आउटपुट मानों को समझने के लिए हमें अलग-अलग मेट्रिक्स को समझने की जरूरत है। यहां दी गई सूची -

  • Server Software - यह वेब सर्वर का नाम है जो पहले सफल रिटर्न के HTTP हेडर में लौटा है।

  • Server Hostname - यह कमांड लाइन पर दिया गया DNS या IP एड्रेस है।

  • Server Port- यह पोर्ट है जिससे एब कनेक्ट हो रहा है। यदि कमांड लाइन पर कोई पोर्ट नहीं दिया गया है, तो यह http के लिए 80 और https के लिए 443 के लिए डिफ़ॉल्ट होगा।

  • SSL/TLS Protocol- यह प्रोटोकॉल पैरामीटर है जो क्लाइंट और सर्वर के बीच बातचीत करता है। यह केवल तभी प्रिंट किया जाएगा जब एसएसएल का उपयोग किया जाता है।

  • Document Path - यह URI कमांड लाइन स्ट्रिंग से पार्स किया गया अनुरोध है।

  • Document Length- यह पहले सफलतापूर्वक लौटे दस्तावेज़ के बाइट्स में आकार है। यदि परीक्षण के दौरान दस्तावेज़ की लंबाई बदलती है, तो प्रतिक्रिया को एक त्रुटि माना जाता है।

  • Concurrency Level - यह परीक्षण के दौरान उपयोग किए जाने वाले समवर्ती ग्राहकों (वेब ​​ब्राउज़र के बराबर) की संख्या है।

  • Time Taken for Tests - यह उस समय से लिया जाता है जब पहला सॉकेट कनेक्शन अंतिम प्रतिक्रिया प्राप्त होने के क्षण में बनाया जाता है।

  • Complete Requests - प्राप्त सफल प्रतिक्रियाओं की संख्या।

  • Failed Requests- अनुरोधों की संख्या जिन्हें विफलता माना गया था। यदि संख्या शून्य से अधिक है, तो कनेक्ट करने, पढ़ने, गलत सामग्री की लंबाई, या अपवादों के कारण विफल हुए अनुरोधों की संख्या दिखाते हुए एक अन्य पंक्ति मुद्रित की जाएगी।

  • Total Transferred- सर्वर से प्राप्त बाइट्स की कुल संख्या। यह संख्या अनिवार्य रूप से तार पर भेजे गए बाइट्स की संख्या है।

  • HTML Transferred- सर्वर से प्राप्त दस्तावेज़ बाइट्स की कुल संख्या। यह संख्या HTTP हेडर में प्राप्त बाइट्स को बाहर करती है

  • Requests per second- यह प्रति सेकंड अनुरोधों की संख्या है। यह मान कुल समय में अनुरोधों की संख्या को विभाजित करने का परिणाम है।

  • Time per request- प्रति अनुरोध औसत समय बिताया। प्रथम मान की गणना सूत्र समरूपता * टाइमकेन * 1000 / के साथ की जाती है, जबकि दूसरे मान की गणना सूत्र टाइमकेन * 1000 / प्रति के साथ की जाती है।

  • Transfer rate - कुल जमा / 1024 / समयसीमा द्वारा गणना के अनुसार स्थानांतरण की दर।

लोड परीक्षण आउटपुट का त्वरित विश्लेषण

अब कमांड से आउटपुट वैल्यू की हेडिंग के बारे में जानने के बाद, आइए हम अपने प्रारंभिक परीक्षण के आउटपुट मानों का विश्लेषण और समझने की कोशिश करें -

  • अपाचे संगठन अपने स्वयं के वेब सर्वर सॉफ्टवेयर का उपयोग कर रहा है - अपाचे (संस्करण 2.4.7)

  • सर्वर पोर्ट 443 पर https के कारण सुन रहा है। अगर यह http होता, तो यह 80 (डिफ़ॉल्ट) होता।

  • हस्तांतरित कुल डेटा 100 अनुरोधों के लिए 58769 बाइट्स है।

  • टेस्ट 1.004 सेकंड में पूरा हुआ। कोई असफल अनुरोध नहीं है।

  • प्रति सेकंड अनुरोध - 99.56। यह एक बहुत अच्छी संख्या मानी जाती है।

  • अनुरोध के अनुसार समय - 100.444 एमएस (10 समवर्ती अनुरोधों के लिए)। इसलिए सभी अनुरोधों के लिए, यह 100.444 एमएस / 10 = 10.044 एमएस है।

  • स्थानांतरण दर - 1338.39 [किब्ते / सेकंड] प्राप्त की।

  • कनेक्शन समय के आंकड़ों में, आप देख सकते हैं कि कई अनुरोधों के लिए कुछ सेकंड इंतजार करना पड़ा। यह अपाचे वेब सर्वर की प्रतीक्षा कतार में अनुरोध डालने के कारण हो सकता है।

हमारे पहले परीक्षण में, हमने एक एप्लिकेशन (यानी, www.apache.org) को एक अलग सर्वर पर होस्ट किया था। ट्यूटोरियल के बाद के भाग में, हम उसी सर्वर पर होस्ट किए गए अपने नमूना वेब-अनुप्रयोगों का परीक्षण करेंगे, जहां से हम एब परीक्षण चला रहे होंगे। यह सीखने और प्रदर्शन के उद्देश्य में आसानी के लिए है। आदर्श रूप से, सटीक माप के लिए मेजबान नोड और परीक्षण नोड अलग-अलग होने चाहिए।

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

अपाचे बेंच का आउटपुट प्लॉट करना

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

$ ab -n 100 -c 10 -g out.data https://www.apache.org/

अब हम देखते हैं out.data प्लॉट बनाने से पहले -

$ less out.data

Output

starttime       seconds ctime   dtime   ttime   wait
Tue May 30 12:11:37 2017        1496160697      40      38      77      13
Tue May 30 12:11:37 2017        1496160697      42      38      79      13
Tue May 30 12:11:37 2017        1496160697      41      38      80      13
...

अब कॉलम हेडर को समझते हैं out.data फ़ाइल -

  • starttime - यह वह दिनांक और समय है जिस पर कॉल शुरू हुई थी।

  • seconds - शुरुआत के समय के समान लेकिन यूनिक्स टाइमस्टैम्प प्रारूप में (दिनांक -d @ 1496160697 स्टार्टटाइम आउटपुट देता है)।

  • ctime - यह कनेक्शन समय है।

  • dtime - यह प्रोसेसिंग टाइम है।

  • ttime - यह कुल समय है (यह समय और समय का योग है, गणितीय रूप से ttime = ctime + dtime)।

  • wait - यह वेटिंग टाइम है।

इन विविध वस्तुओं का एक दूसरे से कैसे संबंध है, इसके चित्रण के लिए, निम्नलिखित छवि पर एक नज़र डालें -

यदि हम टर्मिनल पर काम कर रहे हैं या जहां ग्राफिक्स उपलब्ध नहीं हैं, gnuplotएक बढ़िया विकल्प है। हम निम्नलिखित चरणों से गुजरते हुए इसे जल्दी समझ लेंगे।

आइए हम gnuplot स्थापित करें और लॉन्च करें -

$ sudo apt-get install gnuplot  
$ gnuplot

Output

G N U P L O T
Version 4.6 patchlevel 6    last modified September 2014
Build System: Linux x86_64

Copyright (C) 1986-1993, 1998, 2004, 2007-2014
Thomas Williams, Colin Kelley and many others

gnuplot home:     http://www.gnuplot.info
faq, bugs, etc:   type "help FAQ"
immediate help:   type "help"  (plot window: hit 'h')

Terminal type set to 'qt'
gnuplot>

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

gnuplot> set terminal dumb

Output

Terminal type set to 'dumb'
Options are 'feed  size 79, 24'

जैसा कि, हमारा gnuplot टर्मिनल अब ASCII प्लॉट के लिए तैयार है, आइए हम से डेटा प्लॉट करते हैं out.data फ़ाइल -

gnuplot> plot "out.data" using 9  w l

Output

1400 ++-----+------+-----+------+------+------+------+-----+------+-----++
       +      +      +     +      +      +      +"out.data" using 9 ****** +
       |                                                                   |
  1200 ++                       ********************************************
       |     *******************                                           |
  1000 ++    *                                                            ++
       |     *                                                             |
       |     *                                                             |
   800 ++   *                                                             ++
       |    *                                                              |
       |    *                                                              |
   600 ++   *                                                             ++
       |    *                                                              |
       |    *                                                              |
   400 ++   *                                                             ++
       |    *                                                              |
   200 ++   *                                                             ++
       |    *                                                              |
       +****  +      +     +      +      +      +      +     +      +      +
     0 ++-----+------+-----+------+------+------+------+-----+------+-----++
       0      10     20    30     40     50     60     70    80     90    100

हमने अनुरोधों की संख्या के संबंध में कॉलम 9 से समय, कुल समय (एमएस में) प्लॉट किया है। हम देख सकते हैं कि शुरुआती दस अनुरोधों के लिए, कुल समय लगभग 100 एमएस में था, अगले 30 अनुरोधों के लिए (10 वें से 40 वें तक ), यह बढ़कर 1100 एमएस हो गया, और इसी तरह। आपका प्लॉट आपके आधार पर अलग होना चाहिएout.data