Q

Quản trị viên

Là một lập trình viên yêu công nghệ, thích viết blog để chia sẻ kiến thức, kinh nghiệm lập trình và những điều thú vị trong thế giới tech.

2272 bài viết · Website
Lập trình Go 22/09/2026 9 phút

GOMAXPROCS trong container: vì sao Go hiểu taskset nhưng bỏ qua --cpus, và cách sửa

Go đặt GOMAXPROCS theo số CPU nó nhìn thấy — nhưng trong Kubernetes, giới hạn CPU thường là CFS quota mà Go 1.23 không đọc. Đo thật: Go nhận biết affinity (taskset thành NumCPU 2) nhưng khi GOMAXPROCS thừa so với CPU thực, chuyển ngữ cảnh cưỡng bức tăng gấp 4 lần. Go 1.23.

Lập trình 22/09/2026 6 phút

Rate limiting với Redis: fixed window, sliding window và token bucket — ba thuật toán, ba mức mượt

Giới hạn số request để chống lạm dụng là bài toán backend kinh điển, và Redis là công cụ lý tưởng nhờ các thao tác nguyên tử. Bài này đo thật trong redis-lab ba thuật toán: fixed window (INCR+EXPIRE, đơn giản nhưng burst ở ranh giới), sliding window (sorted set theo timestamp, mượt hơn, không burst), và token bucket (cho phép burst có kiểm soát). Với limit 5, cả hai đều cho 5 request qua và chặn request 6-7 — nhưng khác nhau ở độ chính xác quanh ranh giới cửa sổ.

Lập trình Go 22/09/2026 10 phút

Capstone: REST API production-grade bằng thư viện chuẩn Go — 16.000 req/s, không framework

Gộp mọi bài học của sê-ri vào một dịch vụ REST thật: định tuyến net/http (Go 1.22+), middleware recover chống sập, đếm atomic, timeout và graceful shutdown. Đo tải thật: 80.570 request 0 lỗi, 16.114 req/s, p50 1ms p99 31ms; server sống sót qua 3 panic và tắt sạch khi nhận SIGTERM.