Apache Bench - การเปรียบเทียบผลลัพธ์

ในบทนี้เราจะเปรียบเทียบผลลัพธ์ที่มีและไม่มีแฟล็ก ให้เราดูว่าการใช้แฟล็กที่เหมาะสมสามารถเพิ่มประสิทธิภาพของเว็บแอปพลิเคชันของคุณได้อย่างไร ก่อนหน้านั้นเราต้องเข้าใจว่าหากแอปพลิเคชันของคุณเรียบง่ายคุณอาจไม่สังเกตเห็นความแตกต่าง เช่นเดียวกับแอปพลิเคชันง่ายๆของเราที่มีแฟล็กและไม่มีแฟล็ก จากนั้นเราจะทำการทดสอบเดียวกันกับhttps://www.apache.org/ URL และดูความแตกต่าง

การทดสอบแอปพลิเคชันของเราโดยไม่มีธง

ในส่วนนี้เราจะเข้าใจวิธีทดสอบแอปพลิเคชันของเราโดยไม่มีแฟล็ก

$ ab -n 100 -c 10 http://127.0.0.1:8000/

เอาต์พุต

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 127.0.0.1 (be patient).....done


Server Software:        Rocket
Server Hostname:        127.0.0.1
Server Port:            8000

Document Path:          /
Document Length:        Variable

Concurrency Level:      10
Time taken for tests:   0.244 seconds
Complete requests:      100
Failed requests:        0
Non-2xx responses:      100
Keep-Alive requests:    0
Total transferred:      27700 bytes
HTML transferred:       6600 bytes
Requests per second:    2208.77 [#/sec] (mean)
Time per request:       4.527 [ms] (mean)
Time per request:       0.453 [ms] (mean, across all concurrent requests)
Transfer rate:          597.49 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        1    2   0.7      2       3
Processing:     0    2   0.7      2       4
Waiting:        0    2   1.0      2       3
Total:          4    4   0.3      4       5

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

ทดสอบแอปพลิเคชันของเราด้วย Flags

ในส่วนนี้เราจะเข้าใจวิธีทดสอบแอปพลิเคชันของเราด้วยแฟล็ก

$ ab -l -r -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate"  http://127.0.0.1:8000/

เอาต์พุต

...
Requests per second:    2277.07 [#/sec] (mean)
Time per request:       4.392 [ms] (mean)
Time per request:       0.439 [ms] (mean, across all concurrent requests)
Transfer rate:          615.97 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        1    2   0.7      2       3
Processing:     0    2   0.7      2       4
Waiting:        0    2   1.0      2       3
Total:          4    4   0.2      4       5

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

เราสามารถสังเกตได้ว่าสถิติผลลัพธ์ไม่มีความแตกต่างกันมากนัก

การทดสอบเว็บไซต์องค์กร Apache โดยไม่มีธง

ตอนนี้ให้เราดูวิธีทดสอบเว็บไซต์องค์กร Apache โดยไม่มีแฟล็ก

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

เอาต์พุต

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:            80

Document Path:          /
Document Length:        58433 bytes

Concurrency Level:      10
Time taken for tests:   1.498 seconds
Complete requests:      100
Failed requests:        0
Total transferred:      5877500 bytes
HTML transferred:       5843300 bytes
Requests per second:    66.74 [#/sec] (mean)
Time per request:       149.840 [ms] (mean)
Time per request:       14.984 [ms] (mean, across all concurrent requests)
Transfer rate:          3830.58 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       12  110 295.2     12    1012
Processing:    37   38   0.5     38      39
Waiting:       12   13   0.3     13      15
Total:         49  147 295.4     50    1051

Percentage of the requests served within a certain time (ms)
  50%     50
  66%     50
  75%     50
  80%     50
  90%    816
  95%   1050
  98%   1051
  99%   1051
 100%   1051 (longest request)

การทดสอบเว็บไซต์ Apache Organization ด้วย Flags

ตอนนี้ให้เราทดสอบเว็บไซต์องค์กร Apache ด้วย Flags

$ ab -l -r -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate"  http://www.apache.org/

เอาต์พุต

...
Document Length:        Variable

Concurrency Level:      10
Time taken for tests:   0.357 seconds
Complete requests:      100
Failed requests:        0
Keep-Alive requests:    100
Total transferred:      1358510 bytes
HTML transferred:       1317700 bytes
Requests per second:    280.28 [#/sec] (mean)
Time per request:       35.678 [ms] (mean)
Time per request:       3.568 [ms] (mean, across all concurrent requests)
Transfer rate:          3718.41 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   3.7      0      12
Processing:    14   17  21.3     15     227
Waiting:       14   17  21.3     14     227
Total:         14   18  21.5     15     227

Percentage of the requests served within a certain time (ms)
  50%     15
  66%     15
  75%     15
  80%     15
  90%     27
  95%     28
  98%     29
  99%    227
 100%    227 (longest request)

คุณสามารถสังเกตได้ว่าคำขอต่อวินาทีเพิ่มขึ้นอย่างไรโดยใช้แฟล็ก ในกรณีนี้โดยเฉพาะอย่างยิ่งเนื่องจากการใช้-H "Accept-Encoding: gzipยุบเนื่องจากแฟล็กนี้บอกให้เซิร์ฟเวอร์ Apache ให้บริการคำขอในไฟล์ gzipped รูปแบบ.

พิจารณาผล Apache Bench

ประเด็นสำคัญบางประการที่ต้องพิจารณาเมื่อพูดถึงผลลัพธ์ของ Apache Bench วิธีนี้จะช่วยให้เราออกแบบกลยุทธ์โดยรวมเพื่อขจัดปัญหาคอขวดในแอปพลิเคชันของเราและปรับปรุงประสิทธิภาพ

เราจำเป็นต้องร้องขอต่อวินาที สิ่งนี้ทำให้เราทราบว่าการตั้งค่าเว็บเซิร์ฟเวอร์ของเราทำงานได้ดีเพียงใด ยิ่งจำนวนมากประสิทธิภาพก็จะยิ่งดีขึ้น จากนั้นเวลาในการเชื่อมต่อ (มิลลิวินาที) และเปอร์เซ็นต์ของคำขอที่ให้บริการ คุณอาจต้องปรับแต่งการตั้งค่าของเว็บเซิร์ฟเวอร์ของคุณเพื่อเปลี่ยนเมตริกเหล่านี้ตามประสิทธิภาพที่คุณต้องการ

ตรวจสอบว่ามีข้อผิดพลาดในบันทึกข้อผิดพลาดของ Apache หรือเว็บเซิร์ฟเวอร์ที่ใช้หรือบันทึก (ทั่วไป) หรือไม่ เมื่อคุณจะเพิ่มภาระของคุณสิ่งต่างๆจะเริ่มทำให้หายใจไม่ออก: ปัญหาหน่วยความจำจะเริ่มขึ้น สคริปต์ python จำนวนมากจะเริ่มทำงานผิดพลาดหากไม่ได้เขียนโดยคำนึงถึงการทำงานพร้อมกัน

คุณต้องค้นหาว่าอะไรคือค่าการทำงานพร้อมกันที่สำคัญซึ่งสูงกว่าที่เว็บเซิร์ฟเวอร์ของคุณขัดข้องและ / หรือหมดเวลา? โดยปกติสิ่งนี้ควรเกิดขึ้นในระดับความพร้อมกันสูงพอสมควร หากค่านี้ต่ำแสดงว่ามีบางอย่างผิดปกติและคุณต้องปรับการตั้งค่าเหล่านี้ให้ต่ำลง / สูงขึ้น

สรุป

ในบทช่วยสอนนี้เราได้เรียนรู้วิธีใช้ Apache Bench เพื่อทดสอบเว็บไซต์หรือเว็บแอปพลิเคชันใด ๆ Apache Bench เป็นเครื่องมือที่มีค่ามากในการพิจารณาว่าควรปรับปรุงการตั้งค่าเซิร์ฟเวอร์เว็บแอปพลิเคชันของคุณอย่างไรเพื่อลดปัญหาคอขวดและเพิ่มประสิทธิภาพ เมื่อคุณคุ้นเคยกับการใช้งานพื้นฐานของ Apache Bench แล้วคุณสามารถเริ่มต้นด้วยการสร้างแผนการทดสอบใหม่เพื่อวัดประสิทธิภาพของแอปพลิเคชันของคุณในสถานการณ์ต่างๆ