ab - เครื่องมือเปรียบเทียบเซิร์ฟเวอร์ Apache HTTP
ab [ -A auth-username:password ] [ -b windowsize ] [ -B local-address ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -E client-certificate file ] [ -f protocol ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -l ] [ -m HTTP-method ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username:password ] [ -q ] [ -r ] [ -s timeout ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -u PUT-file ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [ -Z ciphersuite ] [http[s]://]hostname[:port]/path
ab เป็นเครื่องมือสำหรับการเปรียบเทียบเซิร์ฟเวอร์ Apache Hypertext Transfer Protocol (HTTP) ของคุณ ได้รับการออกแบบมาเพื่อให้คุณเข้าใจว่าการติดตั้ง Apache ปัจจุบันของคุณมีประสิทธิภาพเพียงใด โดยเฉพาะอย่างยิ่งจะแสดงให้คุณเห็นว่าการติดตั้ง Apache ของคุณสามารถให้บริการได้กี่คำขอต่อวินาที
จัดหาข้อมูลรับรองการรับรองความถูกต้องพื้นฐานไปยังเซิร์ฟเวอร์ ชื่อผู้ใช้และรหัสผ่านถูกคั่นด้วย : เดียว และส่งใน wire base64 ที่เข้ารหัส สตริงจะถูกส่งโดยไม่คำนึงว่าเซิร์ฟเวอร์ต้องการหรือไม่ (เช่น ส่งการตรวจสอบสิทธิ์ 401 ที่จำเป็น)
ขนาดของบัฟเฟอร์รับ/ส่ง TCP หน่วยเป็นไบต์
ที่อยู่ที่จะผูกเมื่อทำการเชื่อมต่อขาออก
จำนวนคำขอหลายรายการในแต่ละครั้ง ค่าเริ่มต้นคือหนึ่งคำขอต่อครั้ง
เพิ่มบรรทัด คุกกี้: ในคำขอ อาร์กิวเมนต์มักจะอยู่ในรูปของคู่ ชื่อ=ค่า ฟิลด์นี้สามารถทำซ้ำได้
ไม่แสดง "เปอร์เซ็นต์ที่แสดงภายในตาราง XX [ms]" (การสนับสนุนเดิม).
เขียนไฟล์ค่าที่คั่นด้วยเครื่องหมายจุลภาค (CSV) ซึ่งมีค่าสำหรับแต่ละเปอร์เซ็นต์ (ตั้งแต่ 1% ถึง 100%) ของเวลา (หน่วยเป็นมิลลิวินาที) ที่ใช้ในการแสดงเปอร์เซ็นต์ของคำขอนั้น ซึ่งมักจะมีประโยชน์มากกว่าไฟล์ 'gnuplot' เนื่องจากผลลัพธ์ถูก 'binned' แล้ว
เมื่อเชื่อมต่อกับเว็บไซต์ SSL ให้ใช้ใบรับรองไคลเอ็นต์ที่ให้ไว้ในรูปแบบ PEM เพื่อรับรองความถูกต้องกับเซิร์ฟเวอร์ ไฟล์นี้คาดว่าจะมีใบรับรองไคลเอ็นต์ ตามด้วยใบรับรองระดับกลาง ตามด้วยคีย์ส่วนตัว พร้อมใช้งานใน 2.4.36 และใหม่กว่า
ระบุโปรโตคอล SSL/TLS (SSL2, SSL3, TLS1, TLS1.1, TLS1.2 หรือ ALL) รองรับ TLS1.1 และ TLS1.2 ใน 2.4.4 และใหม่กว่า
เขียนค่าที่วัดได้ทั้งหมดออกมาเป็นไฟล์ 'gnuplot' หรือ TSV (ค่าที่แยกจากแท็บ) ไฟล์นี้สามารถนำเข้าได้อย่างง่ายดายในแพ็คเกจเช่น Gnuplot, IDL, Mathematica, Igor หรือแม้แต่ Excel ป้ายกำกับอยู่ที่บรรทัดแรกของไฟล์
แสดงข้อมูลการใช้งาน
เพิ่มส่วนหัวเพิ่มเติมในคำขอ อาร์กิวเมนต์มักจะอยู่ในรูปของบรรทัดส่วนหัวที่ถูกต้อง ซึ่งมีคู่ค่าฟิลด์ที่คั่นด้วยโคลอน (เช่น, "Accept-Encoding: zip/zop;8bit" ).
ทำคำขอ HEAD แทน GET
เปิดใช้งานคุณลักษณะ HTTP KeepAlive เช่น ดำเนินการหลายคำขอภายในเซสชัน HTTP เดียว ค่าเริ่มต้นคือไม่มี KeepAlive
อย่ารายงานข้อผิดพลาดหากความยาวของการตอบกลับไม่คงที่ สิ่งนี้มีประโยชน์สำหรับเพจไดนามิก พร้อมใช้งานใน 2.4.7 และใหม่กว่า
วิธี HTTP ที่กำหนดเองสำหรับคำขอ พร้อมใช้งานใน 2.4.10 และใหม่กว่า
จำนวนคำขอที่จะดำเนินการสำหรับเซสชันการเปรียบเทียบ ค่าเริ่มต้นคือดำเนินการเพียงคำขอเดียวซึ่งมักจะนำไปสู่ผลการเปรียบเทียบที่ไม่ใช่ตัวแทน
ไฟล์ที่มีข้อมูลไปยัง POST อย่าลืมตั้งค่า -T ด้วย
ระบุข้อมูลรับรองการรับรองความถูกต้องพื้นฐานให้กับพร็อกซีระหว่างทาง ชื่อผู้ใช้และรหัสผ่านถูกคั่นด้วย : เดียว และส่งใน wire base64 ที่เข้ารหัส สตริงจะถูกส่งโดยไม่คำนึงว่าพร็อกซีต้องการหรือไม่ (กล่าวคือ ได้ส่งการตรวจสอบความถูกต้องของพร็อกซี 407 แล้ว)
เมื่อประมวลผลคำขอมากกว่า 150 รายการ ab จะแสดงจำนวนความคืบหน้าใน stderr ทุกๆ 10% หรือ 100 คำขอหรือมากกว่านั้น แฟล็ก -q จะระงับข้อความเหล่านี้
อย่าออกจากซ็อกเก็ตที่ได้รับข้อผิดพลาด
จำนวนวินาทีสูงสุดที่จะรอก่อนที่ซ็อกเก็ตจะหมดเวลา ค่าเริ่มต้นคือ 30 วินาที มีให้ใน 2.4.4 และใหม่กว่า
ไม่แสดงค่ามัธยฐานและค่าเบี่ยงเบนมาตรฐาน และไม่แสดงข้อความเตือน/ข้อผิดพลาดเมื่อค่าเฉลี่ยและค่ามัธยฐานห่างกันมากกว่าหนึ่งหรือสองเท่าของค่าเบี่ยงเบนมาตรฐาน และตั้งค่าเริ่มต้นเป็นค่าต่ำสุด/เฉลี่ย/สูงสุด (การสนับสนุนเดิม).
จำนวนวินาทีสูงสุดที่จะใช้สำหรับการเปรียบเทียบ ซึ่งแสดงถึง -n 50000 ภายใน ใช้สิ่งนี้เพื่อเปรียบเทียบเซิร์ฟเวอร์ภายในระยะเวลารวมที่แน่นอน ตามค่าเริ่มต้นจะไม่มีการจำกัดเวลา
ส่วนหัวของประเภทเนื้อหาที่จะใช้สำหรับข้อมูล POST/PUT เช่น application/x-www-form-urlencoded ค่าเริ่มต้นคือ ข้อความ/ธรรมดา
ไฟล์ที่มีข้อมูลไปยัง PUT อย่าลืมตั้งค่า -T ด้วย
ตั้งค่าระดับการใช้คำฟุ่มเฟือย - 4 และสูงกว่าพิมพ์ข้อมูลในส่วนหัว 3 และสูงกว่าพิมพ์รหัสตอบกลับ (404, 200 เป็นต้น) 2 และ พิมพ์คำเตือนและข้อมูลด้านบน
แสดงหมายเลขเวอร์ชันและออก
พิมพ์ผลลัพธ์ในตาราง HTML ตารางเริ่มต้นมีความกว้างสองคอลัมน์ โดยมีพื้นหลังสีขาว
สตริงที่ใช้เป็นแอตทริบิวต์สำหรับ ตาราง แอตทริบิวต์จะแทรกตารางที่นี่
ใช้พร็อกซีเซิร์ฟเวอร์สำหรับคำขอ
สตริงที่ใช้เป็นแอตทริบิวต์สำหรับ สตริงที่ใช้เป็นแอตทริบิวต์สำหรับ ระบุชุดการเข้ารหัส SSL/TLS (ดูที่รหัสของ openssl) รายการต่อไปนี้อธิบายถึงค่าที่ส่งกลับโดย ab: ค่า (ถ้ามี) จะส่งคืนในส่วนหัว HTTP ของ เซิร์ฟเวอร์ ของการตอบกลับครั้งแรกที่สำเร็จ ซึ่งรวมถึงอักขระทั้งหมดในส่วนหัวตั้งแต่ต้นจนถึงจุดที่ตรวจพบอักขระที่มีค่าทศนิยม 32 (โดยเฉพาะอย่างยิ่ง: ช่องว่างหรือ CR/LF) ที่อยู่ DNS หรือ IP ที่ระบุในบรรทัดคำสั่ง พอร์ตที่ ab กำลังเชื่อมต่อ หากไม่มีการกำหนดพอร์ตในบรรทัดคำสั่ง ค่าเริ่มต้นจะเป็น 80 สำหรับ http และ 443 สำหรับ https พารามิเตอร์โปรโตคอลที่เจรจาระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ สิ่งนี้จะถูกพิมพ์เมื่อใช้ SSL เท่านั้น URI คำขอแยกวิเคราะห์จากสตริงบรรทัดคำสั่ง นี่คือขนาดเป็นไบต์ของเอกสารแรกที่ส่งคืนสำเร็จ หากความยาวของเอกสารเปลี่ยนแปลงระหว่างการทดสอบ การตอบสนองจะถือว่าเป็นข้อผิดพลาด จำนวนไคลเอ็นต์พร้อมกันที่ใช้ระหว่างการทดสอบ นี่คือเวลาที่ใช้ตั้งแต่วินาทีที่การเชื่อมต่อซ็อกเก็ตแรกถูกสร้างขึ้นจนถึงเวลาที่ได้รับการตอบกลับล่าสุด จำนวนการตอบกลับที่สำเร็จที่ได้รับ จำนวนคำขอที่ถือว่าล้มเหลว หากตัวเลขมากกว่าศูนย์ ระบบจะพิมพ์บรรทัดอื่นที่แสดงจำนวนคำขอที่ล้มเหลวเนื่องจากการเชื่อมต่อ การอ่าน ความยาวเนื้อหาไม่ถูกต้อง หรือข้อยกเว้น จำนวนข้อผิดพลาดที่ล้มเหลวระหว่างการเขียน (ไปป์เสีย) จำนวนการตอบกลับที่ไม่อยู่ในรหัสการตอบกลับ 200 ชุด ถ้าคำตอบทั้งหมดคือ 200 ช่องนี้จะไม่ถูกพิมพ์ จำนวนการเชื่อมต่อที่ทำให้เกิดคำขอ Keep-Alive หากกำหนดค่าให้ส่งข้อมูลเป็นส่วนหนึ่งของการทดสอบ นี่คือจำนวนไบต์ทั้งหมดที่ส่งระหว่างการทดสอบ ช่องนี้จะถูกละไว้หากการทดสอบไม่มีเนื้อหาที่จะส่ง จำนวนไบต์ทั้งหมดที่ได้รับจากเซิร์ฟเวอร์ จำนวนนี้คือจำนวนไบต์ที่ส่งผ่านสาย จำนวนไบต์เอกสารทั้งหมดที่ได้รับจากเซิร์ฟเวอร์ จำนวนนี้ไม่รวมไบต์ที่ได้รับในส่วนหัว HTTP นี่คือจำนวนคำขอต่อวินาที ค่านี้เป็นผลมาจากการหารจำนวนคำขอด้วยเวลาทั้งหมดที่ใช้ เวลาเฉลี่ยที่ใช้ต่อคำขอ ค่าแรกคำนวณโดยใช้สูตร เวลาพร้อมกัน * เวลาที่ใช้ * 1,000/เสร็จแล้ว ส่วนค่าที่สองคำนวณโดยใช้สูตร เวลาที่ใช้ * 1,000/เสร็จแล้ว อัตราการถ่ายโอนที่คำนวณโดยสูตร totalread/1024/timetaken มีบัฟเฟอร์ที่ประกาศแบบสแตติกหลายตัวที่มีความยาวคงที่ เมื่อรวมกับการแยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่งแบบขี้เกียจ ส่วนหัวการตอบสนองจากเซิร์ฟเวอร์และอินพุตภายนอกอื่นๆ สิ่งนี้อาจกัดคุณได้ ไม่ได้ใช้ HTTP/1.x อย่างสมบูรณ์ ยอมรับเฉพาะรูปแบบการตอบสนองที่ 'คาดหวัง' บางรูปแบบเท่านั้น การใช้งาน strstr(3) ที่ค่อนข้างหนักจะแสดงขึ้นด้านบนสุดของโปรไฟล์ ซึ่งอาจบ่งบอกถึงปัญหาด้านประสิทธิภาพ กล่าวคือ คุณจะวัดประสิทธิภาพ ab มากกว่าประสิทธิภาพของเซิร์ฟเวอร์เอาต์พุต
ข้อบกพร่อง