ปัญหาการทดสอบเว็บไซต์ด้วย apachebench แล้วได้ผลการทดสอบที่เร็วผิดปกติ

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

ด้านล่างนี้คือรูปภาพของเว็บไซต์ที่ต้องการจะทดสอบ และมันก็สามารถทำงานได้เป็นปกติดี จะเห็นว่าผมเรียกไปยัง URL http://siamlearning.org (จากรูป) และก็ยังสามารถเรียกไปยัง URL ปกติ เช่น http://www.siamlearning.org/index.php ได้เช่นกัน
ยกแรก ผมทดสอบด้วยคำสั่ง

ได้ผลทดสอบดังรูปด้านล่าง
จะเห็นว่าได้ผลการทดสอบสูงทีเดียว (Requests per second) 896 รีเควสต่อวินาที ซึ่งผลที่ได้ก็ดูน่าจะดีใจนะครับ แต่เนื่องจากผมได้มีการทดสอบจากหลายๆแหล่งและหลากหลายรูปแบบ ผมมองว่ามันผิดปกติ

ผมทำการทดสอบในยกที่สอง ด้วยคำสั่ง

จะเห็นว่าผมเพิ่ม -v2 ลงในคำสั่งด้วย ซึ่งคำสั่งนี้จะทำให้ apachebench แสดงผล header ที่ได้จากการทดสอบออกมาด้วย โดยได้ผลทดสอบดังรูปด้านล่าง
จะเห็นว่าผลการทดสอบมี header HTTP/1.1 301 Moved Permanetly ส่งกลับมาด้วย และถ้าดูจากเนื้อหาที่ส่งกลับมาก็ไม่ใช่เนื้อหาปกติ (301 Moved Permanetly หมายถึงมีการ redirect หน้าไปยังหน้าอื่น) เลยได้ผลการทดสอบสูงผิดปกติ

การแก้ไข
ในกรณีข้างต้นก็ให้ส่ง URL ที่ไม่มีการ redirect เข้าไปแทน ซึ่งจากเว็บตัวอย่างผมส่ง URL http://www.siamlearning.org/index.php แทน (เป็น URL ที่มีการ Redirect ไป)

ได้ผลตอบกลับที่ถูกต้องตามด้านล่าง HTTP/1.1 200 OK
จริงๆผลการทดสอบอาจเจอ Error อื่นๆได้อีก เช่น 403 404 หรือ 503 (ในขณะที่การเปิดเว็บไซต์ผ่านบราวเซอร์สามารถทำได้ปกติ) ดังนั้น ในการทดสอบให้สังเกตุผลการทดสอบให้ดี และแก้ปัญหาตามค่าที่ส่งมาให้ถูกต้อง ซึ่งผลลัพท์ตอบกลับที่ถูกต้อง ต้องเป็น 2xx เท่านั้น 

ยกตัวอย่างที่ผมเคยเจอ เช่น ได้รับค่าตอบกลับเป็น 404 (หมายถึงไม่พบหน้าเพจ) ปัญหานี้ผมพบว่าเกิดจาก hostname ของ Server ไม่ถูกต้อง
คำแนะนำในการทดสอบ
  • เปิดเว็บไซต์บนบราวเซอร์ได้ ไม่ได้ประกันว่าจะสามารถทำการทดสอบได้ถูกต้อง
  • การตรวจสอบด้วย apachebench ควรใส่ -v2 ลงไปด้วยเสมอ เพื่อดูว่าผลตอบกลับถูกต้องหรือไม่
  • การทดสอบด้วย apachebench สามารถตรวจสอบออนไลน์ได้ เช่น ทดสอบจากเครื่องของเราไปยัง Server ที่ออนไลน์อยู่ ซึ่งได้ผลใกล้เคียงกัน แต่ผลลัพท์ที่ได้จะรวมประสิทธิภาพของ Server ด้วย
  • ถ้าต้องการทดสอบประสิทธิภาพของสคริปต์ แนะนำให้ทำการทดสอบบน localhost จะให้ผลการทดสอบสำหรับสคริปต์ที่แม่นยำกว่า
  • หากทำการทดสอบด้วยสคริปต์ (shell script) จะต้องทำการทดสอบภายใต้โฟลเดอร์ของสคริปต์เท่านั้นถึงจะให้ผลการทดสอบที่ถูกต้อง
ผู้เขียน goragod โพสต์เมื่อ 18 ธ.ค. 2558 เปิดดู 4,078 ป้ายกำกับ apachebench
^