Apache ab: โปรดอธิบายผลลัพธ์


31

ฉันได้ดูไปรอบ ๆ และไม่สามารถหาคำอธิบายโดยละเอียดเกี่ยวกับผลลัพธ์ได้เลย ส่วนใหญ่แล้วจะเข้าใจได้ง่าย แต่มีส่วนหนึ่งที่ทำให้ฉันอ่อนแรง:

Time per request:       109537.505 [ms] (mean)
Time per request:       109.538 [ms] (mean, across all concurrent requests)

นี่หมายถึง - สำหรับฉัน - หากคุณวัดคำขอทั้งหมดที่เกิดขึ้นพร้อมกัน (สิ่งใดก็ตามที่มีความหมาย) คำขอนั้นจะถูกส่งกลับเร็วขึ้น 100 เท่า ทำไมเวลาต่อคำขอเปลี่ยนไปมากขนาดนั้น? มันไม่สมเหตุสมผล

มีคำอธิบายรายละเอียดของส่วนนี้และส่วนอื่น ๆ ของเอาต์พุต ab หรือไม่?

คำตอบ:


53

หากคุณมีการตั้งค่าพร้อมกันที่ 1 จะไม่มีความแตกต่างระหว่างทั้งสอง มันเริ่มต้นขึ้นเมื่อคุณมีคำขอมากกว่า 1 คำขอพร้อมกัน

ลองดูตัวอย่างของสิ่งที่ฉันทำกับฉันlocalhost:

ab -c 1 -n 1000 http://localhost/

จะให้:

Time taken for tests:   3.912 seconds
Time per request:       3.912 [ms] (mean)
Time per request:       3.912 [ms] (mean, across all concurrent requests)

ซึ่งหมายความว่าจำเป็นต้องใช้ 3.912 วินาทีเพื่อดำเนินการ 1,000 คำร้องขอทีละรายการ ดังนั้นคำร้องขอเดียวจึงจำเป็นต้องใช้ 3.912 วินาที / 1000 = 3.912 ms โดยเฉลี่ย

ทีนี้ลองเพิ่มระดับการทำงานพร้อมกันสักหน่อย:

ab -c 10 -n 1000 http://localhost/

Time taken for tests:   0.730 seconds
Time per request:       7.303 [ms] (mean)
Time per request:       0.730 [ms] (mean, across all concurrent requests)

เวลานี้แทน 3.912 วินาทีเราต้องการเพียง 0.730 วินาทีเพื่อให้งานสำเร็จ เราได้ดำเนินการ 1,000 คำขอใน 0.730 วินาทีดังนั้นหนึ่งคำขอจะใช้เวลาโดยเฉลี่ย 0.730 วินาที / 1,000 = 0.730 ms (บรรทัดสุดท้าย) แต่สถานการณ์แตกต่างกันเล็กน้อยขณะนี้เรากำลังดำเนินการ 10 คำขอพร้อมกัน ดังนั้นในความเป็นจริงจำนวนของเราที่นี่ไม่ได้สะท้อนให้เห็นถึงเวลาจริงก็จะใช้เวลาสำหรับการร้องขอหนึ่งที่จะเสร็จสมบูรณ์ 0.730 ms * 10 (จำนวนการร้องขอพร้อมกัน) = 7.303 ms นั่นคือเวลาที่ใช้โดยเฉลี่ยสำหรับการร้องขอครั้งเดียวเพื่อให้เสร็จสมบูรณ์หากมีการดำเนินการไม่พร้อมกัน (หรือมากกว่าอย่างถูกต้องในลักษณะแยกที่ระดับการเกิดพร้อมกันในปัจจุบัน)

หมายเลขสุดท้ายที่คุณเห็น (0.730 มิลลิวินาที) ใช้เพื่อบอกว่าเวลารวมทั้งหมดจะเพิ่มขึ้นเท่าใดหากคุณเพิ่ม 1 คำขอ ( -n 1001) โดยใช้ระดับการทำงานพร้อมกันในปัจจุบัน-c 10(อย่างน้อยก็ในทางทฤษฎี)

7.303 ms ให้ภาพรวมของระยะเวลาที่คำขอแยกเดี่ยวจะทำงาน

การเปลี่ยนแปลงที่คุณเห็นระหว่างตัวอย่าง-c 1และ-c 10:

[-c 1 ]: Time per request:       3.912 [ms] (mean)
[-c 10]: Time per request:       7.303 [ms] (mean)

-c 1หมายความว่าคำขอเดียวไม่ทำงานได้เร็วขึ้นถ้ามันเป็นเพียงคนเดียวที่ถูกประหารชีวิต หากมีหลายคำขอที่-c 10แย่งชิงทรัพยากรคำขอเดียวจะใช้เวลานานกว่าจะเสร็จสมบูรณ์ แต่ถ้าคุณคำนึงถึงความจริงที่ว่าคุณกำลังทำ 10 คำขอในเวลาเดียวกันใน 7.303 ms นี้คุณจัดการกับ 10 คำขอแทน 1

ดังนั้นการวัดความล่าช้าสำหรับคำร้องขอเดียว - 7.303 ms จึงมีประโยชน์มากกว่า แต่เป็นการวัดประสิทธิภาพ - 0.730 ms มีความหมายมากกว่า อันที่จริงแล้วเป็น 0.730 ms <3.912 ms คุณจะเห็นว่าคุณจะสามารถตอบสนองการร้องขอต่อวินาทีได้มากขึ้นโดยรวมหากคุณอนุญาตให้มี 10 คำขอพร้อมกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.