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 แล้วคุณสามารถเริ่มต้นด้วยการสร้างแผนการทดสอบใหม่เพื่อวัดประสิทธิภาพของแอปพลิเคชันของคุณในสถานการณ์ต่างๆ