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

By Better Wise

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

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

```mermaid
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
