ทดสอบความเร็วของเว็บไซต์ด้วย apachebench กันเถอะ
การวัดประสิทธิภาพของเว็บไซต์สามารถทำได้ง่ายๆด้วยโปรแกรม apachebench ครับ
apachebench เป็นโปรแกรมหนึ่งในชุดของ Apache ซึ่งถ้ามีการติดตั้ง XAMPP บน Windows โปรแกรมนี้จะอยู่ที่ D:\xampp\apache\bin\ab.exe สำหรับบน linux อาจไม่มีโปรแกรมนี้ติดตั้งมาด้วยเมื่อติดตั้ง Apache ซึ่งเราก็สามารถติดตั้งได้เองด้วยคำสั่ง (บน Ubuntu)
sudo apt-get install apache2-utils
วิธีการใช้งาน apachebench (ต่อไปนี้ผมจะเรียกสั้นๆว่า ab นะครับ)
โปรแกรมนี้มี options อยู่หลายตัวให้เลือกใช้นะครับ สามารถดูรายละเอียดของ options แบบเต็มๆได้ที่ https://httpd.apache.org/...2.2/programs/ab.html ซึ่งในบทความนี้ผมจะนำเสนอเฉพาะ options ที่ใช้ในการทดสอบเว็บไซต์แบบง่ายๆเท่านั้น
สำหรับบน Windows ให้เปิด cmd.exe ขึ้นมาและพิมพ์คำสั่งด้านล่างลงไป
D:\xampp\apache\bin\ab.exe ให้เปลี่ยนแปลงไปตาม path ที่ถูกต้องของโปรแกรมที่ใช้งานบนเครื่องนะครับ
ส่วนบน Linux ให้พิมพ์คำสั่งนี้ใน terminal
- -c 20 concurrency จำนวน request ที่ส่งออกพร้อมๆกันในแต่ละครั้ง เปรียบเหมือนกับการมีจำนวนผู้เยี่ยมชมเว็บไซต์พร้อมๆกันนั่นเอง ถ้าไม่กำหนดจะหมายถึงการส่ง request ออกไปเพียงครั้งเดียว (คนเดียว)
- -n 20 requests จำนวนครั้งทั้งหมดในการทดสอบ ถ้าไม่กำหนดจะหมายถึงส่งทดสอบเพียงครั้งเดียว เราควรจะกำหนดค่านี้ไว้จำนวนหนึ่งเพื่อความถูกต้องในการทดสอบ ซึ่งผลการทดสอบจะได้จากค่าเฉลี่ยตามจำนวนครั้งในการทดสอบ
- -t 3 timelimit กำหนดช่วงเวลาสูงสุด (วินาที) สำหรับการเปรียบเทียบแต่ละครั้ง โปรแกรมจะส่งการทดสอบครั้งถัดไปตามเวลาที่กำหนดนี้ ถ้าไม่กำหนดค่านี้โปรแกรมจะทำการส่งการเปรียบเทียบแบบต่อเนื่อง
- ค่าสุดท้ายที่ส่งคือ URL ที่จะทำการทดสอบ ถ้าเป็นโดเมน จะต้องมี / ต่อท้ายชื่อโดเมนด้วย
ผลการทดสอบเป็นไปตามรายละเอียดด้านล่าง
- Concurrency Level จำนวน request ต่อการส่งในแต่ละครั้ง
- Time taken for tests ช่วงเวลาการเชื่อมต่อแต่ละครั้งหลังจากการเชื่อมต่อครั้งก่อนหน้าเสร็จสิ้น
- Complete requests จำนวนผลการทดสอบสำเร็จทั้งหมด
- Failed requests จำนวนผลการทดสอบล้มเหลวทั้งหมด ค่านี้ควรเป็น 0 ถ้าค่านี้ไม่ใช่ 0 แสดงว่า Server มีความล้มเหลวระหว่างการทดสอบ
- Requests per second ค่าเฉลี่ยการทดสอบต่อวินาที ค่านี้ยิ่งมากยิ่งดี ซึ่งจะหมายความถึงประสิทธิภาพในการรับจำนวนผู้เยี่ยมชม
- Time per request ช่วงเวลาเฉลี่ยสำหรับการตอบสนองต่อ 1 request ค่านี้ยิ่งน้อยยิ่งดี
ในหัวข้อนี้ตัวเลขแสดงรายละเอียดองค์ประกอบของคําขอแต่ละรายการ
- Connect ให้ข้อมูลเกี่ยวกับเวลาที่ใช้ในการสร้างการเชื่อมต่อกับเซิร์ฟเวอร์ของคุณ (ซึ่งโดยทั่วไปจะเป็นเวลาแฝงของเครือข่าย)
- Processing เวลาในการประมวลผล คือระยะเวลาทั้งหมดที่เว็บแอปพลิเคชันใช้ในการประมวลผลและส่งการตอบกลับที่สมบูรณ์
- Waiting คือเวลาที่ใช้ในการรอการส่งกลับไบต์แรกหลังจากส่งคําขอ
หมายเหตุ
concurrency จะสามารถกำหนดค่าได้สูงสุดค่าหนึ่งเท่านั้น ตามที่กำหนดโดยเครื่องที่ใช้ในการทดสอบ และ ไม่ควรกำหนดให้มากจนเกินไป หรือ นำไปใช้ทดสอบเว็บไซต์คนอื่นด้วยการทดสอบแบบหนักหน่วง เพราะอาจทำให้เว็บไซต์ที่ทำการทดสอบเกิดความเสียหายได้
concurrency จะสามารถกำหนดค่าได้สูงสุดค่าหนึ่งเท่านั้น ตามที่กำหนดโดยเครื่องที่ใช้ในการทดสอบ และ ไม่ควรกำหนดให้มากจนเกินไป หรือ นำไปใช้ทดสอบเว็บไซต์คนอื่นด้วยการทดสอบแบบหนักหน่วง เพราะอาจทำให้เว็บไซต์ที่ทำการทดสอบเกิดความเสียหายได้