আব লোড পরীক্ষা


194

কেউ কীভাবে আমাকে অ্যাপাচি বেঞ্চ টুল ( ab) ব্যবহার করে আমার ওয়েবসাইটের পরীক্ষা লোড করতে পারে তার প্রক্রিয়াটি সম্পর্কে আমাকে চলতে পারে ?

আমি নিম্নলিখিত জানতে চাই:

প্রতি মিনিটে কয়জন লোক সাইট পরিচালনা করতে পারে?

এটি বের করার জন্য আমার যে আদেশগুলি চালানো উচিত তা দয়া করে আমাকে অনুসরণ করুন।

আমি প্রতিটি টিউটোরিয়াল চেষ্টা করেছিলাম এবং তারা বিভ্রান্ত করছে।

উত্তর:


314

অ্যাপাচি বেঞ্চমার্ক সরঞ্জামটি খুব মৌলিক, এবং এটি আপনাকে কিছু কার্য সম্পাদন সম্পর্কে দৃ idea় ধারণা দেবে, তবে আপনি যদি নিজের সাইটটিকে উত্পাদনের গুরুতর চাপের সম্মুখীন করতে চান তবে কেবল এটির উপর নির্ভর করা খারাপ ধারণা it

এটি বলার পরে, এখানে সর্বাধিক সাধারণ এবং সহজ পরামিতি:

-c: ("সংকেত")। একই সাথে কতগুলি ক্লায়েন্ট (লোক / ব্যবহারকারী) সাইটে আঘাত করবে তা সূচিত করে। abরান করার সময় , সেখানে -cক্লায়েন্টরা হিট হবে। বেঞ্চমার্ক চলাকালীন এটিই আপনার সাইটটি কতটা চাপের মুখোমুখি হবে তা স্থির করে।

-n: কতগুলি অনুরোধ করা হবে তা নির্দেশ করে। এটি কেবল মানদণ্ডের দৈর্ঘ্য স্থির করে। আপনার সার্ভার সমর্থন করতে পারে এমন -nএকটি মান সহ একটি উচ্চ মূল্য -cহ'ল স্থির চাপের মধ্যে জিনিসগুলি যাতে না ভাঙে তা নিশ্চিত করার জন্য এটি ভাল ধারণা: 5 ঘন্টার চেয়ে 5 সেকেন্ডের জন্য চাপকে সমর্থন করা সমান নয়।

-k: এটি প্রকৃতিগতভাবে "কিপএলাইভ" ফানসিওনালিটি ব্রাউজারগুলি করে। আপনার -k"বুলিয়ান" হিসাবে এটির কোনও মূল্য পাস করার দরকার নেই (অর্থাত: এটি ইঙ্গিত দেয় যে আপনি এইচটিটিপি থেকে আজীবন শিরোনাম রাখুন এবং সংযোগটি বজায় রাখতে আপনার পরীক্ষার জন্য চান)। যেহেতু ব্রাউজারগুলি এটি করে এবং আপনার ব্রাউজারগুলি থেকে আপনার সাইটের যে স্ট্রেস এবং প্রবাহ থাকবে তা অনুকরণ করতে চান, সুতরাং এটির সাথে আপনাকে একটি বেঞ্চমার্ক করার পরামর্শ দেওয়া হচ্ছে।

চূড়ান্ত যুক্তিটি কেবল হোস্ট। ডিফল্টরূপে এটি http: // প্রোটোকলটিতে আঘাত করে যদি আপনি এটি নির্দিষ্ট না করেন।

ab -k -c 350 -n 20000 example.com/

উপরের কমান্ডটি জারি করার মাধ্যমে, আপনি 20 হাজার অনুরোধ পূরণ না হওয়া পর্যন্ত আপনি 350 একযোগে সংযোগের সাথে http://example.com/ টিপুন। এটি লাইভ হেডার ব্যবহার করে করা হবে।

প্রক্রিয়া 20 হাজার অনুরোধ শেষ করার পরে, আপনি পরিসংখ্যান সম্পর্কে প্রতিক্রিয়া পাবেন। উপরের প্যারামিটারগুলি ব্যবহার করার সময় আপনি যে স্ট্রেসটি চাপিয়েছিলেন তাতে সাইটটি কত ভাল সম্পাদন করেছিল তা এটি আপনাকে জানাবে।

একই সাথে সাইটটি কত লোক পরিচালনা করতে পারে তা সন্ধানের জন্য, কেবলমাত্র প্রতিক্রিয়া সময়গুলি (অর্থাত্ ন্যূনতম এবং সর্বাধিক প্রতিক্রিয়া সময়, ব্যর্থ অনুরোধ ইত্যাদি) আপনার সাইটটি গ্রহণ করতে পারে এমন সংখ্যা (বিভিন্ন সাইট বিভিন্ন গতির আশা করতে পারে) তা দেখুন। আপনি যদি "যেখানে আমি এটি বাড়িয়ে তুলি, এটি ব্যর্থ অনুরোধ পেতে শুরু করে এবং এটি ভেঙে যায়" এমন স্থানে আঘাত না করা পর্যন্ত আপনি বিভিন্ন-সি মান সহ সরঞ্জামটি চালাতে পারেন।

আপনার ওয়েবসাইটের উপর নির্ভর করে, আপনি প্রতি মিনিটে গড় সংখ্যার অনুরোধ আশা করবেন। এটি এত বেশি পরিবর্তিত হয়, আপনি এটিকে আব দিয়ে সিমুলেট করতে পারবেন না। তবে এটিকে নিয়ে এইভাবে ভাবুন: আপনার গড় ব্যবহারকারী যদি প্রতি মিনিটে 5 টি অনুরোধ মারতে এবং আপনি যথাযথ প্রতিক্রিয়া সময়টির সময়টি 2 সেকেন্ডের বলে মনে করেন, তবে এক মিনিটের মধ্যে 10 ব্যবহারকারীর অনুরোধ থাকবে, যার অর্থ কেবলমাত্র 1/6 সময় এটি সাইটে হিট হবে। এর অর্থ হ'ল যদি আপনার 6 জন ব্যবহারকারী একই সাথে অ্যাব দিয়ে সাইটটিতে হিট করে থাকেন তবে আপনার সম্মতি লেভেলটি (-c) কেবল 6 জন হলেও সিমুলেশনটিতে আপনার 36 জন ব্যবহারকারী থাকতে পারে।

এটি সাইটটি ব্যবহার করে আপনার ব্যবহারকারীদের কাছ থেকে আপনি যে আচরণটি প্রত্যাশা করেছেন তার উপর নির্ভর করে তবে আপনি এটি "আমার ব্যবহারকারী প্রতি মিনিটে এক্স অনুরোধের জন্য প্রত্যাশা করতে পারেন এবং আমি যদি গড় প্রতিক্রিয়া সময়টিকে 2 সেকেন্ড হয় তবে বৈধ মনে করি" থেকে তা পেতে পারেন। তারপরে আপনি গড় প্রতিক্রিয়ার সময়ের 2 সেকেন্ড না লাগা পর্যন্ত কেবল আপনার -c স্তরটি সংশোধন করুন (তবে সর্বাধিক প্রতিক্রিয়া সময় এবং এসটিডিডিভ এখনও বৈধ কিনা তা নিশ্চিত করুন) এবং দেখুন আপনি কতটা বড়-সি তৈরি করতে পারবেন।

আমি আশা করি আমি এটি পরিষ্কার করে দিয়েছি :) শুভকামনা


5
সোজা এবং স্পষ্ট উত্তর! আপনি কেন এটি পেয়েছেন তা সম্পর্কে আপনি আরও কিছুটা ব্যাখ্যা করতে পারেন "এর অর্থ এটিও হ'ল যদি আপনার 6 জন ব্যবহারকারী একই সাথে অ্যাব দিয়ে সাইটটি মারছেন তবে আপনার সীমাবদ্ধকরণ স্তরটি (-সি) কেবলমাত্র যদিও সিমুলেশনটিতে আপনার 36 জন ব্যবহারকারী থাকতে পারে 6. "
কেবারিওটিস

3
কেবলমাত্র একটি অনুস্মারক, আপনি -lপৃষ্ঠায় গতিশীল সামগ্রী থাকলে বিকল্পটি যুক্ত করতে চান , এইভাবে আপনি অনুরোধের মধ্যে সামগ্রীর দৈর্ঘ্য আলাদা হওয়ার কারণে ব্যর্থ অনুরোধগুলির একটি গুচ্ছটি পাবেন না।
জেসিএম

73

এটি বের করার জন্য আমার যে আদেশগুলি চালানো উচিত তা দয়া করে আমাকে অনুসরণ করুন।

আপনি করতে পারেন সবচেয়ে সহজ পরীক্ষাটি হ'ল 1000 অনুরোধগুলি সম্পাদন করা, একসাথে 10 (যা প্রায় 10 সমবর্তী ব্যবহারকারীদের প্রত্যেককে 100 পৃষ্ঠাগুলি - পরীক্ষার দৈর্ঘ্যের তুলনায় সিমুলেট করে)।

ab -n 1000 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://www.example.com/

-n 1000 অনুরোধের সংখ্যা।

-c 10 সমবর্তী দর্শকদের (বনাম অনুক্রমিক দর্শকদের) আরও ভাল অনুকরণ করার জন্য এবি কে একবারে 1 টি অনুরোধের পরিবর্তে একবারে 10 টি অনুরোধ করতে বলে।

-kশিরোনামটি প্রেরণ করে KeepAlive, যা প্রতিটি অনুরোধটি শেষ হওয়ার পরে ওয়েব সার্ভারটিকে সংযোগটি বন্ধ না করতে বলে, তবে পরিবর্তে এটি পুনরায় ব্যবহার করা চালিয়ে যায়।

আমি অতিরিক্ত Accept-Encoding: gzip, deflateশিরোনামটি প্রেরণ করছি কারণ মোড_ডিফলেটটি প্রায়শই 25% -75% টেক্সট / এইচটিএমএল আউটপুট সংক্ষেপণের জন্য ব্যবহৃত হয় - যার ফলে ওয়েব সার্ভারের সামগ্রিক পারফরম্যান্সের প্রভাবের কারণে এটি বাতিল করা উচিত নয় (যেমন, একই পরিমাণে 2x ডেটা স্থানান্তর করতে পারে ইত্যাদি)।

ফলাফল:

Benchmarking www.example.com (be patient)
Completed 100 requests
...
Finished 1000 requests


Server Software:        Apache/2.4.10
Server Hostname:        www.example.com
Server Port:            80

Document Path:          /
Document Length:        428 bytes

Concurrency Level:      10
Time taken for tests:   1.420 seconds
Complete requests:      1000
Failed requests:        0
Keep-Alive requests:    995
Total transferred:      723778 bytes
HTML transferred:       428000 bytes
Requests per second:    704.23 [#/sec] (mean)
Time per request:       14.200 [ms] (mean)
Time per request:       1.420 [ms] (mean, across all concurrent requests)
Transfer rate:          497.76 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       1
Processing:     5   14   7.5     12      77
Waiting:        5   14   7.5     12      77
Total:          5   14   7.5     12      77

Percentage of the requests served within a certain time (ms)
  50%     12
  66%     14
  75%     15
  80%     16
  90%     24
  95%     29
  98%     36
  99%     41
 100%     77 (longest request)

সরল ব্যাখ্যার জন্য, এই লাইনে তবে সবকিছু উপেক্ষা করুন:

Requests per second:    704.23 [#/sec] (mean)

এটি 60০ দ্বারা গুণ করুন এবং আপনার প্রতি মিনিটে আপনার অনুরোধ রয়েছে।

বাস্তব বিশ্বের ফলাফল পেতে, আপনি কিছু স্থির HTML বা index.php ফাইলের পরিবর্তে ওয়ার্ডপ্রেস পরীক্ষা করতে চান কারণ আপনাকে কীভাবে একসাথে সবকিছু সম্পাদন করতে হবে তা জানতে হবে: জটিল পিএইচপি কোড এবং একাধিক মাইএসকিউএল কোয়েরি সহ ...

উদাহরণস্বরূপ, এখানে একই সিস্টেম এবং ডাব্লুএইচএমপি পরিবেশে ওয়ার্ডপ্রেসের একটি নতুন ইনস্টল পরীক্ষার ফলাফল রয়েছে (আমি ওয়্যাম্পডেলিভার ব্যবহার করছি, তবে জ্যাম্প, ওয়্যাম্প সার্ভার এবং অন্যান্যগুলিও রয়েছে) ...

Requests per second:    18.68 [#/sec] (mean)

এটি এখন 37x ধীর!

লোড পরীক্ষার পরে, সামগ্রিক কর্মক্ষমতা (প্রতি সেকেন্ডের অনুরোধগুলি) উন্নত করতে আপনি অনেক কিছু করতে পারেন এবং ওয়েব সার্ভারকে আরও বেশি লোডের অধীনে আরও স্থিতিশীল করে তুলুন (যেমন, বৃদ্ধি -nএবং-c অ্যাপাচে ক্র্যাশ প্রবণতা ) that আপনি এখানে পড়তে পারেন:

এবি (অ্যাপাচি বেঞ্চ) এর সাথে অ্যাপাচি লোড টেস্টিং


9

উইন্ডোতে অ্যাপাচি বেঞ্চ (এবি) স্থাপনের পদক্ষেপ (আইএমও - প্রস্তাবিত)।

পদক্ষেপ 1 - Xampp ইনস্টল করুন।
পদক্ষেপ 2 - খুলুন সিএমডি।
পদক্ষেপ 3 - cd C:\xampp\apache\binসিএমডি
পদক্ষেপ 4 থেকে অ্যাপাচি বেঞ্চ গন্তব্য ( ) এ যান - কমান্ডটি আটকান ( ab -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://localhost:yourport/)
পদক্ষেপ 5 - এর জন্য অপেক্ষা করুন। তোমার হয়ে গেছে


এটি কাজ করছে না ... আমি এই ত্রুটিটি পাচ্ছি: বেঞ্চমার্কিং লোকালহোস্ট (ধৈর্য ধরুন) ... এপ্রি_সকেট_আরসিভি: সংযোগ প্রত্যাখ্যান (111)
বিজয়সিংহ পারমার 4'17


3

আমি আমার কৌতূহলও ছিলাম যদি আমি আমার স্ক্রিপ্টের গতিটি অ্যাপাচি অ্যাবস বা কোনও কনস্ট্রাক্ট / ডিস্ট্রাক্ট পিএইচপি পরিমাপ স্ক্রিপ্ট বা পিএইচপি এক্সটেনশন দিয়ে পরিমাপ করতে পারি।

শেষ দুটি আমার জন্য ব্যর্থ হয়েছে: তারা আনুমানিক। এর পরে আমি "আব" এবং "অ্যাবস" চেষ্টা করার কথা ভেবেছিলাম।

"ab -k -c 350 -n 20000 উদাহরণ.com/" কমান্ডটি সুন্দর কারণ এটি সবই সহজ!

তবে কেউ উদাহরণস্বরূপ www.apachefriends.org এর জন্য কোনও অ্যাপাচি সার্ভারে "লোকালহোস্ট" করার কথা ভেবেছিলেন?

আপনার মূলতে "বেঞ্চ" এর মতো একটি ফোল্ডার তৈরি করা উচিত যেখানে আপনার কাছে দুটি ফাইল রয়েছে: পরীক্ষা "বেঞ্চ.এফপি" এবং রেফারেন্স "void.php"।

এবং তারপরে: এটি মানদণ্ড!

bench.php

<?php

for($i=1;$i<50000;$i++){
    print ('qwertyuiopasdfghjklzxcvbnm1234567890');
}
?>

void.php

<?php
?>

আপনার ডেস্কটপে আপনাকে .bat ফাইলটি ব্যবহার করতে হবে (উইন্ডোজে):

bench.bat

"c:\xampp\apache\bin\abs.exe" -n 10000 http://localhost/bench/void.php
"c:\xampp\apache\bin\abs.exe" -n 10000 http://localhost/bench/bench.php
pause

এখন যদি আপনি মনোযোগ দিয়ে মনোযোগ দিন ...

শূন্য স্ক্রিপ্ট শূন্য ফলাফল উত্পাদন করে না !!! সুতরাং সিদ্ধান্তটি হ'ল: দ্বিতীয় ফলাফল থেকে প্রথম ফলাফলটি হ্রাস করা উচিত !!!

আমি এখানে পেয়েছি:

c:\xampp\htdocs\bench>"c:\xampp\apache\bin\abs.exe" -n 10000 http://localhost/bench/void.php
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        Apache/2.4.33
Server Hostname:        localhost
Server Port:            80

Document Path:          /bench/void.php
Document Length:        0 bytes

Concurrency Level:      1
Time taken for tests:   11.219 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      2150000 bytes
HTML transferred:       0 bytes
Requests per second:    891.34 [#/sec] (mean)
Time per request:       1.122 [ms] (mean)
Time per request:       1.122 [ms] (mean, across all concurrent requests)
Transfer rate:          187.15 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.3      0       1
Processing:     0    1   0.9      1      17
Waiting:        0    1   0.9      1      17
Total:          0    1   0.9      1      17

Percentage of the requests served within a certain time (ms)
  50%      1
  66%      1
  75%      1
  80%      1
  90%      1
  95%      2
  98%      2
  99%      3
 100%     17 (longest request)

c:\xampp\htdocs\bench>"c:\xampp\apache\bin\abs.exe" -n 10000 http://localhost/bench/bench.php
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        Apache/2.4.33
Server Hostname:        localhost
Server Port:            80

Document Path:          /bench/bench.php
Document Length:        1799964 bytes

Concurrency Level:      1
Time taken for tests:   177.006 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      18001600000 bytes
HTML transferred:       17999640000 bytes
Requests per second:    56.50 [#/sec] (mean)
Time per request:       17.701 [ms] (mean)
Time per request:       17.701 [ms] (mean, across all concurrent requests)
Transfer rate:          99317.00 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.3      0       1
Processing:    12   17   3.2     17      90
Waiting:        0    1   1.1      1      26
Total:         13   18   3.2     18      90

Percentage of the requests served within a certain time (ms)
  50%     18
  66%     19
  75%     19
  80%     20
  90%     21
  95%     22
  98%     23
  99%     26
 100%     90 (longest request)

c:\xampp\htdocs\bench>pause
Press any key to continue . . .

90-17 = 73 ফলাফল আমি আশা করি!


2

কেবল অ্যাব ব্যবহার করে আপনার এপিআই লোড পরীক্ষা করা যথেষ্ট নয়। যাইহোক, আমি মনে করি এটি আপনার সাইটের পারফরম্যান্ট কীভাবে আপনাকে প্রাথমিক ধারণা দেওয়ার একটি দুর্দান্ত সরঞ্জাম।

আপনি যদি একই সাথে ব্যাকগ্রাউন্ডে একই সাথে একাধিক এপিআই শেষ পয়েন্টগুলি বিভিন্ন ডেটা সহ পরীক্ষা করতে ab কমান্ডটি ব্যবহার করতে চান তবে আপনাকে "nohup" কমান্ডটি ব্যবহার করতে হবে। আপনি টার্মিনালটি বন্ধ করার পরেও এটি কোনও কমান্ড চালায়।

আমি লিখেছি একটি সহজ স্ক্রিপ্ট যে পুরো প্রক্রিয়া স্বয়ংক্রিয়রূপে এটি ব্যবহার করতে দ্বিধা বোধ করবেন: http://blog.ikvasnica.com/entry/load-test-multiple-api-endpoints-concurrently-use-this-simple-shell-script

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.