what-is-percentile-load-testing
what-is-percentile-load-testing

รีบสรุปก่อนที่จะเริ่มงงกันเลย…

ค่าหลักๆที่ใช้ในการวิเคราะห์ผลของ Performance Testing ก็คือ

  1. Mean = ค่าเฉลี่ย
  2. Median = ค่าที่อยู่ตรงกลางของข้อมูล = 50th percentile
  3. Percentile = ช่วงของข้อมูลที่ตกใน Percent นั้นๆ
  4. Throughtput = จํานวนที่ Server เรารับได้ในช่วงเวลานั้นๆ เช่น 10requests/second แปลว่า รับได้ 10คน ต่อวินาทีเท่านั้น

นี้คือตัวอย่างของการอ่าน Percentile ของรูปนี้น่ะ

percentile-histogram
percentile-histogram (https://blog.appdynamics.com/product/percentiles-made-easy/)
  • สัญญาลักษณ์ μ(a) ติ่งเล็กๆที่เป็นเส้นประลงมา คือ ค่าเฉลี่ยของ response time ทั้งหมด แปลว่า เฉลี่ย response time อยู่ที่ 4.8 seconds
  • สัญญาลักษณ์ 95th Percentile ติ่งเล็กๆที่เป็นเส้นประลงมา แปลว่า คนส่วนใหญ่ได้ response time หรือ จบการ transaction ภายใน 15 seconds หรือตํ่ากว่า และ มีคนราวๆ 5%ได้การ response เกิน 15 วินาที
percentile-explain
percentile-explain (https://blog.appdynamics.com/product/percentiles-made-easy/)
  • เส้นสีนํ้าเงินคือ 95th percentile response time สูงสุดอยู่ที่ 2600ms
    • แปลว่า 95% ของผู้ใช้ที่เข้ามาในเว็ปตัวนี้จะมีค่าอยู่ที่ราวไม่เกิน 2600ms แต่จะมีราวๆ 5% ของ request ทั้งหมดที่เกิน 2600ms ขึ้นไป
  • เส้นสีเขียวคือ Average response time สูงสุดอยู่ที่ 1400ms
    • เฉลี่ยแล้วคนที่เข้าเว็ปไซต์ทั้งหมดจะได้การ response time อยู่ที่ 1400ms
  • จาก Performance Testing Report ตัวนี้ แปลอย่างแรกได้ว่า ผู้ใช้ส่วนใหญ่ 95% จะมี response time ทั้งหมดไม่เกิน 2.6 seconds แล้วเวลาเฉลี่ยของ response time ทั้งหมดจะไม่เกิน 1.4s – 2.6s ซึ่งต้องมาดู เวลาของผู้ใช้อีกทีว่าจะได้ประมาณเท่าไรในแต่ละ ช่วงเวลา
    • แต่ถ้าเราต้องการให้ผู้ใช้ได้ response time ที่ตํ่ากว่า 1.4s อาจจะต้องปรับจูนเครื่องอีกเยอะหน่อย เพราะเวลาเฉลี่ยอยู่ที่ 1.4s นั้นเอง 🙂

Throughtput ดูจากรูปนี้ได้เลย สรุปภายในรูปเดียว

throughput-explain-2
throughput-explain-2

รับได้ทีล่ะ 3 คัน ถ้ามากกว่านั้นก็รอไปเรื่อยๆ นั้นแหละจุดที่มีปัญหานั้นเอง

เริ่มงงกับตัวเลขกันได้ล่ะ

วันนี้อยู่ดีๆมาพูดเรื่องคณิตศาสตร์ Percentile ก็เหมือนจะมาสอนเลขเกินไป เลยต้องอธิบายก่อนว่าที่อยู่ดีๆมาพูดเรื่อง Percentile เพราะว่าเวลาเราทํา Performance Testing กันสิ่งสําคัญที่เราทํา ไม่ใช่แค่การเตรียม Test enviroment หรือ การ Implement load test scripts แต่สิ่งสําคัญอีกอย่างคือ การเลือก Metric และ การวิเคราะห์ผลที่ออกมาด้วยล่ะ 🙂

ส่วนใหญ่ปัญหาที่เจอคือ เช่น

grafana-load-testing-dashboard
grafana-load-testing-dashboard (https://grafana.com/dashboards/1152)

เราทํา Load Testing แต่เราดันแปลความหมายไม่เป็น ทําให้เห็นแต่เป็นกราฟหน้าแปลกๆก็จะแย่หน่อยน่ะ 

  1. ตัวอย่างรูปข้างบน Response Times ผลโหลด test จะมีขึ้นว่า  Percentile mean,90 perc,95 perc,99 perc แต่ถ้าเราไม่รู้ว่ามันคืออะไรล่ะ?
  2. หรือแบบว่า Throughput คืออะไร?

เพราะฉะนั้นแปลว่าถึงเรามีผลเทส แต่อ่านไม่เข้าใจก็จะไม่มีประโยชน์อยู่ดี ดังนั้นวันนี้เลยมาอธิบายวิธีการอ่านง่ายๆกัน 🙂 โดยหลักๆที่จะต้องรู้ในบทความนี้เลยคือ Mean,Median และ Percentile ซึ่งไม่ยากเลย

Median

อันนี้ง่ายมากๆ คือค่าตรงกลางของข้อมูลนั้นๆ

เช่น เรามีเลข 1,9,5,2,3,4,6,7,8 ก็เอาเลขมา sort ก่อนเป็น 1,2,3,4,5,6,7,8,9 แล้วก็หาเลขที่อยู่ตรงกลางจาก 9 ตัวก็คือ เลข 5 นั้นเอง 🙂 แค่นี้แหละ แต่ไม่ได้เห็นคนใช้ในการทํา Performance Testing เท่าไร แต่รู้ไว้นิดๆก็ดีเพราะเป็นเลข ป.4

Mean

ค่าเฉลี่ยของข้อมูล หรือก็คือ (x1 + x2 + … + xn)/n นั้นเอง เช่น 1,2,3,4,5,6,7,8,9 มีค่า mean คือ 5 นั้นเอง

Percentile

ตัวนี้เป็นตัวที่ใช้ค่อนข้างบ่อยเลยล่ะ เวลาดูผลของ Performance Testing พวกข้างบนยังใช้น้อยกว่า เจ้า Percentile คํานิยามง่ายๆก็คือ ค่าของข้อมูลที่ตกลงในช่วงนั้นๆ เช่นตัวอย่างนี้

percentile-percentage-of-data-falls
percentile-percentage-of-data-falls (http://www.mathsisfun.com/data/percentiles.html)

จะเห็นว่าถ้าเราบอกว่าขอดูค่า 80th percentile หน่อย หมายถึงเราเลือกกลุ่มของข้อมูล 80% ที่ตกลงในช่วงนั้น ถ้าตัวอย่างจากในรูปก็จะหมายถึงเอาข้อมูลของ 80% ของที่อยู่ในรูปนั้นเอง 🙂

โดยปกติแล้วทางสถิติ เราจะคํานวณโดยการ

  1. เอาข้อมูลมายําๆๆแล้ว sort ด้วยค่าของมันจากน้อยสุดไปหามากสุด ถ้าใน Performance Testing ก็คือ Response time หรือ metric ที่เรามี
  2. เอาค่ากลุ่มที่เราไม่เลือกออกเช่น 80th Percentile ก็จะเอา 20% ที่เหลือออก
  3. แล้วค่าทั้งหมดที่เหลือก็คือ 80th Percentile นั้นเอง

เช่น 90th Percentile ค่า Transaction time ของแต่ละ Request = 1,3,2,4,5,20,7,8,9,6

  1. sorted = 1,2,3,4,5,6,7,8,9,20
  2. remove 10% = 10*(10/100) = 1 ตัว ซึ่งก็คือ 20 ออกนั้นเอง
  3. แปลว่าค่าที่ได้นี้ก็คือตําแหน่งที่ 9 หรือคือ 9 นี่แหละคือ 90th Percentile Value

ที่นี้มาดูการทํา Performance Testing บ้าง อย่าคิดให้ยากอะไรเลยน่ะ 🙂 ให้มองว่ามันคือ Percentage ที่ผู้ใช้จะได้เจอในเว็ปของเรานั้นแหละ เช่น สมมุติเรารันเทส 10 รอบ ได้ค่าออกมา 2,1,4,50,30,1,3,2,1 ms ทีนี้ขั้นตอนเวลาจะคิดก็จะออกมาตามสเต็ปคือ โดยหา 50th percentile

50th-percentile-calculator
50th-percentile-calculator (http://www.emathhelp.net/calculators/probability-statistics/percentile-calculator/?i=1%2C+1%2C+1%2C+1%2C+2%2C+2%2C+3%2C+4%2C+30%2C+50.&p=50&steps=on)

ซึ่งก็หมายความว่าจะออกมาอยู่ที่ 2ms หรือแปลอีกความหมายนึงได้ว่า 50% ของ request ที่เข้ามายังเว็ปเราจะได้ response time อยู่ที่ 2ms นั้นเอง

Throughtput

เป็นหน่วยยอดนิยม (Transaction Per Second) ที่ใช้ในการวัดว่าระบบน่ะรับการทํางาน หรือ request load ได้ที่เท่าไรในช่วงเวลานั้นๆ เช่น ถ้าเราพูดว่า เว็ป A รับคนใช้งานได้อยู่ที่ 20 คน/ 1 นาที แปลว่าระบบจะรับมากกว่านั้นไม่ได้ แล้วก็จะเริ่มช้าลงไปนั้นเอง 🙂 ลองดูตัวอย่างด้านล่าง

throughput-explain-1
throughput-explain-1 (https://www.joecolantonio.com/2011/07/05/performance-testing-what-is-throughput/)

ปั้มนํ้ามันเข้าได้ทีล่ะ 3 คน ถ้ามาแค่ 3 คันก็เข้าไปใช้สบายๆ

throughput-explain-2
throughput-explain-2 (https://www.joecolantonio.com/2011/07/05/performance-testing-what-is-throughput/)

แต่ถ้าเริ่มมา มากกว่า 3 คันล่ะ แปลว่าคันอื่นๆต้องรอแล้วล่ะ

throughput-explain-3
throughput-explain-3 (https://www.joecolantonio.com/2011/07/05/performance-testing-what-is-throughput/)

ซึ่งก็แปลว่าจุดที่คันอื่นๆเริ่มเข้ามาเพิ่มแล้วเรารองรับไม่ได้มันจะเรียก Buckle Point แล้วกราฟก็จะเริ่มลงไปเรื่อยๆๆดิ่งเหวลงไป แล้วพวก response time ก็จะสูงขึ้นๆเรื่อยตามรูปนั้นเอง ยังงี้น่ะหมายถึงจุดนั้นคือ จุดที่ระบบเรารับโหลดไม่ไหว ต้องจูนนิ่งใหม่นั้นเอง

อ่านถึงตรงนี้อาจจะมีมึนบ้าง ให้กลับไปอ่านสนุปบนสุดอีกทีน้า 🙂

Leave a Reply

avatar

This site uses Akismet to reduce spam. Learn how your comment data is processed.