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 8 phút

Phát hiện rò rỉ goroutine sản xuất trong Go: số goroutine tăng mãi không giảm

Goroutine kẹt vĩnh viễn (chờ channel không ai gửi) không thoát và GC không dọn được — mỗi request rò một cái, số goroutine tăng mãi tới khi hết RAM. Đo thật trong Go: 1000 request rò 1000 goroutine (NumGoroutine 1→1001 không giảm), và pprof goroutine chỉ đúng chỗ kẹt tại một dòng code.

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

Cache stampede: đo thật 500 request cùng miss một key, cả 500 lao thẳng xuống database

Khi một key nóng biến mất — hết TTL hoặc bị đá — mọi request đang hỏi nó đều miss cùng lúc và đều đi tiếp xuống database. Đo thật trên Go + Redis + PostgreSQL: truy vấn gốc chạy một mình hết 6,2ms; cho 500 request cùng xuất phát thì cả 500 đều chạm database và request xấu nhất mất 1119,1ms — chậm hơn 180 lần, dù pool database chỉ có 50 kết nối. Kèm luật R × D tính trước quy mô stampede, và một cái bẫy khi đo khiến phép đo đầu tiên che mất gần một nửa hiện tượng.