ในการทดสอบประสิทธิภาพการทำงานของระบบงานต่างๆ นั้น
มักจะมีคำศัพท์เฉพาะมากมาย ซึ่งคนส่วนใหญ่มักไม่ค่อยเข้าใจว่ามันคืออะไร
หนึ่งในนั้นก็คือคำว่า Throughput
ดังนั้น มาดูกันว่า Throughput คืออะไร และค่าของมันบ่งบอกถึงอะไรบ้าง
Throughput คืออะไร
เป็นจำนวน transaction/request ที่ถูกสร้างขึ้นหรือทำงานได้ในช่วงเวลาการทดสอบหนึ่งๆ
ค่าใช้สำหรับบอกว่า ระบบงานมีความสามารถในการจัดการงานจำนวนเท่าไรในแต่ละหนึ่งหน่วยเวลานั้นๆ
สูตรการคำนวณนั้นไม่ยากเท่าไร นั่นก็คือ
Throughput = (จำนวน request หรือ transaction) / จำนวนเวลาการทำงานรวม
ก่อนเริ่มทำการทดสอบประสิทธิภาพ คุณจะต้องกำหนดเป้าหมาย
ในค่าของ Throughput ไว้ก่อนเสมอ ว่าต้องการเท่าไร เช่น
- จำนวนใน 1 วินาที
- จำนวนใน 1 นาที
- จำนวนใน 1 ชั่วโมง
ตัวอย่างเช่น
ระบบงานสามารถทำงานได้ 5 งานพร้อมๆ กันใน 1 นาที
ดังนั้น ถ้ามีงานเข้ามา 5 งานพร้อมๆ กัน
ระบบจะสามารถทำงานทั้ง 5 งานได้พร้อมๆ กัน โดยไม่มีงานใดรอเข้าทำงานเลย
แสดงว่าระบบงานมีค่า Throughput = 5 ต่อ 1 นาที
ดังรูป
แต่ถ้ามีงานจำนวน 10 งานเข้ามาพร้อมๆ กันใน 1 นาที
ซึ่งจำนวนงานเกินความสามารถของระบบงาน
ดังนั้นจะมีงานจำนวน 5 งานที่ต้องเข้าคิวเพื่อรอทำงาน ดังรูป
หน่วยที่นิยมใช้สำหรับวัดค่า Throughput
นั่นก็คือ Transaction Per Second ( TPS )
นั่นคือจำนวน transaction ที่สามารถทำงานได้ใน 1 วินาที
การนำไปใช้งานจริง
ผมมักจะใช้ Apache JMeter ในการทดสอบประสิทธิภาพของระบบงาน เช่นระบบ Web application
ก่อนที่จะเริ่มต้นการทดสอบนั้น
เราจะต้องทำการกำหนด หรือ สร้างจำนวน request หรือ ผู้ใช้งานขึ้นมาก่อน
โดยจำนวน request จะค่อยๆ ถูกสร้างขึ้นมาในรูปแบบ ramp up ดังรูป
คำอธิบาย
จะทำการสร้าง 100 request ภายใน 10 วินาที
ดังนั้น จะทำการสร้าง 10 request ต่อ 1 วินาทีนั่นเอง
เมื่อจำนวน request สูงขึ้นมาเรื่อยๆ ค่าของ Throughput ก็เพิ่มมากขึ้นเช่นกัน
เมื่อไรก็ตามที่จำนวน request และ จำนวนการประมวลผลของระบบการทดสอบเริ่มนิ่ง
นั่นแสดงว่า ค่าของ Throughput ของระบบนั่นนิ่งหรือเสถียรแล้วเช่นกัน
ดังรูป
รูปแสดงค่า Throughput ของระบบ เมื่อเพิ่มจำนวน request เข้ามาด้วย JMeter
แต่ถ้าต้องการรู้ว่า ค่า Throughput จะสามารถเพิ่มขึ้นได้อีกหรือไม่ ?
ก็ให้ทำการเพิ่มจำนวน request ที่ส่งเข้ามาทดสอบระบบซะ
ซึ่งถ้าการเพิ่มจำนวน request มันทำให้ค่า Throughput ลดลงมา
แสดงว่ามีส่วนใดส่วนหนึ่งในระบบงานเกิดปัญหาคอขวดมาแล้ว
หรือนั่นคือ เกินขีดความสามารถของระบบในตอนนั้นครับ เช่น
เข้าคิวเพื่อรอทำงานนานเกินไป เช่น CPU, database และ network เป็นต้น
ส่งผลให้ response time สูงขึ้นมาก จนเกิด timeout
โดยจำเป็นต้องนำข้อมูลจากระบบ monitoring อื่นๆ
เข้ามาพิจารณาด้วยนะครับ เช่น Monitoring server, access log เป็นต้น
เพื่อทำให้การวิเคราะห์ผล มีประสิทธิภาพและถูกต้องมากยิ่งขึ้น
รูปตัวอย่างแสดงระบบเกิดปัญหาคอขวดขึ้น
โดยสรุปแล้ว
ค่าของ Throughput นั้นเป็นแนวคิดหลักในการทดสอบประสิทธิภาพของระบบ
ดังนั้น ทุกๆ คนที่ต้องทำการทดสอบประสิทธิภาพของระบบต้องมีความรู้ความเข้าใจก่อนเสมอ
ไม่เช่นนั้นจะทดสอบระบบไม่รู้เรื่องนะครับ