🧯 Cheatsheet: App chịu tải: load balancer, stateless và rate limiting

By Better Wise

Tra cứu nhanh cho toàn khóa: nút thắt cổ chai, scale, session, load balancer, connection pool, rate limiting, hàng đợi, đọc số tải.


1. Nút thắt cổ chai: vì sao app sập khi đông người dùng

Nguyên tắc cốt lõi: hệ thống không sập vì "quá nhiều người dùng". Nó sập vì một tài nguyên cụ thể bị cạn và tài nguyên đó kéo theo cả chuỗi phía sau.

Chuỗi sập điển hình

flowchart LR
    Traffic["📈<br/>Traffic tăng"] --> CPU["🔥<br/>CPU / RAM cạn"]
    Traffic --> Pool["🔌<br/>Connection pool cạn"]
    Traffic --> Queue["⏳<br/>Hàng đợi phình"]
    CPU --> Latency["🐢<br/>Latency tăng"]
    Pool --> Latency
    Queue --> Latency
    Latency --> Timeout["⏱️<br/>Client timeout"]
    Timeout --> Retry["🔁<br/>Client retry"]
    Retry --> Traffic

Điểm chết người: retry tạo vòng lặp dương. Mỗi lần timeout, client thử lại, tải tăng thêm, latency càng cao, càng nhiều timeout.

Bảng: tài nguyên nào cạn trước?

Tài nguyên Dấu hiệu Nút thắt tiếp theo
CPU Load average cao, latency tăng đều Xử lý request chậm, hàng đợi đầy
RAM Swap, GC pause dài OOM kill, server restart
Connection pool DB Request chờ connection Timeout DB, request xếp hàng
File descriptor / socket Lỗi "too many open files" Không nhận connection mới
Băng thông Response lớn chậm Timeout, trải nghiệm tệ

Cách tìm nút thắt

  1. Đo trước khi tối ưu. Không đoán.
  2. Nhìn tài nguyên nào bão hòa gần 100% đầu tiên.
  3. Sửa đúng tài nguyên đó, rồi đo lại để tìm nút thắt tiếp theo.

Tip: Chỉ tối ưu một nút thắt tại một thời điểm. Sửa xong nút thắt này, nút thắt khác sẽ lộ ra. Đó là bình thường, không phải thất bại.


2. Scale dọc và scale ngang

Định nghĩa

This cheatsheet is premium content. Sign in and purchase the course to view the full content. Sign in