Table of Contents
TPS & QPS
QPS - Query rate per second
QPS - Query rate per second: là số lượng truy vấn mỗi giây, là thước đo lưu lượng của máy chủ truy vấn xử lý giao dịch trong một thời gian cụ thể.
RT - Response time: Thời gian phản hồi của hệ thống, tính từ lúc request được gửi đi tới khi nhận được respond trả về từ hệ thống.
TPS - Transactions per second
TPS - Transactions per second: Số Transaction được xử lý thành công trong 1 giây.
Một TPS có thể bao gồm nhiều QPS, ví dụ: chúng ta truy cập một trang Web, có thể khi đó sẽ cần truy cập Server N lần - Một Transaction được tạo ra thì có N QPS được tạo ra.
Ví dụ: một người A uống được 10 lon bia trong 10 phút, người B uống được 1 lon bi trong 1 phút. Nhưng người B chưa chắc uống được 10 long bia trong vòng 10 phút. Khi này người A là TPS, người B là QPS.
Công thức
- RT = Thời gian phản hồi trung bình
- QPS (TPS) = Số lượng yêu cầu / RT giao dịch mỗi giây
- Concurrent = Số lượng yêu cầu / Số lượng giao dịch được hệ thống xử lý cùng lúc
Ví dụ: Ngân hàng mở cửa vào buổi sáng, cho 10 nhân viên đứng ở 10 quầy. THời gian giải quyết trung bình của mỗi nhân viên là 5 phút. Khi đó:
- Concurrent = 10
- RT = 5*60 = 300s
- QPS (TPS) = 10/300 = 0.003 lượt
QPS (TPS) = Concurrent/RT
Bài toán
Theo định luật 20/80 vào thời gian cao điểm hệ thống, trên một Server duy nhất có PV (page view) mỗi ngày là 2.000.000. Thì Server này cần bao nhiêu QPS? Giả sử mỗi Server chịu được 60 QPS thì cần bao nhiêu Server?
- PV = 2000000
- CONCURENT = PV * 80%
- RT = 86400 * 20%
- QPS = CONCURENT/RT = 92.5
- SV = QPS/60 = 92.5/60 ~ 2 (Cần 2 Server)
Để cải thiện QPS cần:
- Tăng CONCURENT: Tăng luồng xử lý đồng thời (thread), mở rộng Backend,…
- Giảm RT: tối ưu giảm thời gian xử lý - sử dụng cache, tối ưu hoá CSDL, tối ưu hoá code, giảm response không cần thiết, đẩy nhanh tác vụ (sử dụng rabbitmq, kafka,…),…