📊 บทความ
⏱ อ่าน ~8 นาที
ทำไม Average Response Time
ถึงโกหกคุณทุกครั้ง
99 Request ตอบ 100ms แต่มี 1 Request ตอบ 10 วินาที — Average = 199ms ดูดีมาก แต่ User 1% ต้องรอถึง 10 วินาที ถ้าดูแค่ Average คุณจะพลาด Bottleneck ที่แท้จริง บทความนี้อธิบาย Metrics ที่ควรดูจริงๆ พร้อม Threshold มาตรฐาน แยกตามประเภทระบบ ตั้งแต่ E-commerce ไปจนถึง FinTech และ Healthcare
Metrics ที่ดีต้องมาจาก Business Requirement
ก่อนทำ Performance Test ต้องกำหนด Acceptance Criteria จาก SLA ให้ชัดเจน เช่น "p95 Response Time < 2 วินาที ที่ 1,000 Concurrent Users และ Error Rate < 1%" จากนั้นใช้ Metrics เหล่านี้ในการ Pass/Fail Test
Key Metrics
⏱️ Response Time
เวลาที่ระบบใช้ในการตอบสนองต่อ Request หนึ่งครั้ง
นับตั้งแต่ Client ส่ง Request จนได้รับ Response ครบ
รายงานในรูปแบบ Average, Median (p50), p90, p95, p99
Industry Standard Thresholds
ยอดเยี่ยม (p95)
< 500ms
ยอมรับได้ (p95)
< 2,000ms
ต้องปรับปรุง (p95)
> 3,000ms
🚀 Throughput (TPS/RPS)
จำนวน Transaction หรือ Request ที่ระบบประมวลผลได้ต่อวินาที
(TPS = Transactions Per Second, RPS = Requests Per Second)
ยิ่งสูงยิ่งดี แต่ต้องดูควบคู่กับ Error Rate
วิธีคำนวณ TPS เป้าหมาย
Peak Users
1,000 users
Think Time
2 seconds
Target TPS
= 1000 / 2 = 500
❌ Error Rate
เปอร์เซ็นต์ของ Request ที่ได้รับ Error Response (HTTP 4xx/5xx)
หรือ Timeout เทียบกับ Request ทั้งหมด
เป็น Metric ที่สำคัญที่สุดในการบอกว่าระบบ "ล้มเหลว"
Threshold ที่ยอมรับได้
ยอดเยี่ยม
< 0.1%
ยอมรับได้
< 1%
ล้มเหลว
> 5%
😊 Apdex Score
Application Performance Index — คะแนน 0–1 ที่รวม Response Time
และ User Satisfaction เป็นตัวเลขเดียว คำนวณจาก
Satisfied + Tolerating/2 หารด้วย Total Samples
Apdex Score Meaning
Excellent
0.94 – 1.0
Good
0.85 – 0.94
Fair
0.70 – 0.85
Poor / Unacceptable
< 0.70
👥 Concurrent Users
จำนวน User ที่ใช้งานระบบพร้อมกันในเวลาเดียวกัน
แตกต่างจาก Active Users ที่เพิ่งเข้ามา
คำนวณด้วย Little's Law: N = λ × W
Little's Law
N (Concurrent)
= λ × W
λ (Arrival Rate)
requests/sec
W (Response Time)
seconds
💻 Resource Utilization
การใช้งาน CPU, Memory, Network I/O และ Disk I/O ของ Server
ระหว่าง Test ถ้า CPU สูงเกินไปอาจหมายถึง Code ไม่มีประสิทธิภาพ
ถ้า Memory เพิ่มเรื่อยๆ อาจมี Memory Leak
Resource Thresholds (Production)
CPU (Sustained)
< 70%
Memory
< 80%
Network I/O
< 70% bandwidth
Percentiles — ทำไมต้องดู p95 ไม่ใช่ Average?
Average Response Time ทำให้เราเข้าใจผิด!
ถ้ามี 99 Request ที่ Response 100ms และ 1 Request ที่ Response 10,000ms Average = 199ms — ดูดีมาก แต่ความจริงคือ User 1% ต้องรอ 10 วินาที!
p50
Median
50% ของ Request เร็วกว่าค่านี้ ใช้แทน Average ได้ดีกว่า
p95
95th Percentile
95% ของ User ได้ Response เร็วกว่าค่านี้ — มาตรฐานที่ใช้กันมากที่สุด
p99
99th Percentile
Worst-case สำหรับ User ส่วนใหญ่ ใช้สำหรับ Critical System ที่ยอมให้ช้าไม่ได้
Apdex — วิธีคำนวณ
Formula — Apdex Score
── กำหนด T (Threshold) = 2 วินาที ────────────────────────────
Satisfied : Response Time ≤ T (≤ 2s)
Tolerating : Response Time ≤ 4T (2s < t ≤ 8s)
Frustrated : Response Time > 4T (> 8s)
── สูตร ────────────────────────────────────────────────────────
Satisfied + (Tolerating / 2)
Apdex = ──────────────────────────────
Total Samples
── ตัวอย่าง ────────────────────────────────────────────────────
Satisfied = 800 requests
Tolerating = 150 requests
Frustrated = 50 requests
Total = 1000 requests
800 + (150 / 2) 875
Apdex = ─────────────────── = ───── = 0.875 (Good ✓)
1000 1000
SLA Thresholds ตาม Industry
| ประเภทระบบ | p95 Response Time | Error Rate | Apdex | Availability |
|---|---|---|---|---|
| 🛒 E-commerce (Checkout) | < 2,000ms | < 0.1% | > 0.90 | 99.95% |
| 🏦 Banking / FinTech | < 1,000ms | < 0.01% | > 0.95 | 99.99% |
| 📰 Content / Media | < 3,000ms | < 1% | > 0.85 | 99.9% |
| 🏥 Healthcare | < 1,500ms | < 0.1% | > 0.92 | 99.99% |
| 🎮 Gaming | < 100ms | < 0.5% | > 0.95 | 99.9% |
| 📱 Mobile API | < 2,000ms | < 1% | > 0.85 | 99.9% |