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

Throughput คืออะไร

เป็นจำนวน transaction/request ที่ถูกสร้างขึ้นหรือทำงานได้ในช่วงเวลาการทดสอบหนึ่งๆ
ค่าใช้สำหรับบอกว่า ระบบงานมีความสามารถในการจัดการงานจำนวนเท่าไรในแต่ละหนึ่งหน่วยเวลานั้นๆ

สูตรการคำนวณนั้นไม่ยากเท่าไร นั่นก็คือ
Throughput   =  (จำนวน request หรือ transaction)   /   จำนวนเวลาการทำงานรวม

ก่อนเริ่มทำการทดสอบประสิทธิภาพ คุณจะต้องกำหนดเป้าหมาย
ในค่าของ Throughput  ไว้ก่อนเสมอ ว่าต้องการเท่าไร เช่น

  • จำนวนใน 1 วินาที
  • จำนวนใน 1 นาที
  • จำนวนใน 1 ชั่วโมง

ตัวอย่างเช่น

ระบบงานสามารถทำงานได้ 5 งานพร้อมๆ กันใน 1 นาที

ดังนั้น ถ้ามีงานเข้ามา 5 งานพร้อมๆ กัน
ระบบจะสามารถทำงานทั้ง 5 งานได้พร้อมๆ กัน โดยไม่มีงานใดรอเข้าทำงานเลย
แสดงว่าระบบงานมีค่า Throughput  = 5 ต่อ 1 นาที
ดังรูป
Screen Shot 2557-12-07 at 1.26.51 PM

แต่ถ้ามีงานจำนวน 10 งานเข้ามาพร้อมๆ กันใน 1 นาที
ซึ่งจำนวนงานเกินความสามารถของระบบงาน
ดังนั้นจะมีงานจำนวน 5 งานที่ต้องเข้าคิวเพื่อรอทำงาน ดังรูป
Screen Shot 2557-12-07 at 1.30.32 PM

หน่วยที่นิยมใช้สำหรับวัดค่า Throughput
นั่นก็คือ Transaction Per Second ( TPS )
นั่นคือจำนวน transaction ที่สามารถทำงานได้ใน 1 วินาที

การนำไปใช้งานจริง

ผมมักจะใช้ Apache JMeter ในการทดสอบประสิทธิภาพของระบบงาน เช่นระบบ Web application

ก่อนที่จะเริ่มต้นการทดสอบนั้น
เราจะต้องทำการกำหนด หรือ สร้างจำนวน request หรือ ผู้ใช้งานขึ้นมาก่อน
โดยจำนวน request จะค่อยๆ ถูกสร้างขึ้นมาในรูปแบบ ramp up ดังรูป

Screen Shot 2557-12-07 at 1.54.13 PM

คำอธิบาย
จะทำการสร้าง 100 request ภายใน 10 วินาที
ดังนั้น จะทำการสร้าง 10 request ต่อ 1 วินาทีนั่นเอง

เมื่อจำนวน request สูงขึ้นมาเรื่อยๆ ค่าของ Throughput ก็เพิ่มมากขึ้นเช่นกัน
เมื่อไรก็ตามที่จำนวน request และ จำนวนการประมวลผลของระบบการทดสอบเริ่มนิ่ง
นั่นแสดงว่า ค่าของ Throughput ของระบบนั่นนิ่งหรือเสถียรแล้วเช่นกัน
ดังรูป

Screen Shot 2557-12-07 at 2.02.09 PM

รูปแสดงค่า Throughput ของระบบ เมื่อเพิ่มจำนวน request เข้ามาด้วย JMeter

Screen Shot 2557-12-07 at 2.08.59 PM

แต่ถ้าต้องการรู้ว่า ค่า Throughput จะสามารถเพิ่มขึ้นได้อีกหรือไม่ ?
ก็ให้ทำการเพิ่มจำนวน request ที่ส่งเข้ามาทดสอบระบบซะ
ซึ่งถ้าการเพิ่มจำนวน request มันทำให้ค่า Throughput ลดลงมา
แสดงว่ามีส่วนใดส่วนหนึ่งในระบบงานเกิดปัญหาคอขวดมาแล้ว
หรือนั่นคือ เกินขีดความสามารถของระบบในตอนนั้นครับ  เช่น
เข้าคิวเพื่อรอทำงานนานเกินไป เช่น  CPU, database และ network เป็นต้น
ส่งผลให้ response time สูงขึ้นมาก จนเกิด timeout

โดยจำเป็นต้องนำข้อมูลจากระบบ monitoring อื่นๆ
เข้ามาพิจารณาด้วยนะครับ เช่น Monitoring server, access log เป็นต้น
เพื่อทำให้การวิเคราะห์ผล มีประสิทธิภาพและถูกต้องมากยิ่งขึ้น

รูปตัวอย่างแสดงระบบเกิดปัญหาคอขวดขึ้น

Screen Shot 2557-12-07 at 2.15.19 PM

โดยสรุปแล้ว

ค่าของ Throughput  นั้นเป็นแนวคิดหลักในการทดสอบประสิทธิภาพของระบบ
ดังนั้น ทุกๆ คนที่ต้องทำการทดสอบประสิทธิภาพของระบบต้องมีความรู้ความเข้าใจก่อนเสมอ
ไม่เช่นนั้นจะทดสอบระบบไม่รู้เรื่องนะครับ