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

go-redis pipeline: gộp nhiều lệnh Redis vào một round-trip

Gửi N lệnh Redis tuần tự là N vòng đi-về mạng — với remote Redis, gần như toàn bộ thời gian là chờ mạng chứ không phải chờ Redis. Pipeline xếp N lệnh rồi gửi hết, đọc hết trong một round-trip. Đo thật trong Go: 1000 lệnh SET tuần tự mất 1.431s, pipeline chỉ 10ms — nhanh 140 lần.

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

Core dump và phân tích sự cố trong Go: mổ xẻ tiến trình đã chết

Panic trace cho biết crash ở đâu nhưng mất trạng thái biến khi tiến trình chết. Core dump là ảnh chụp toàn bộ bộ nhớ lúc crash — mổ xẻ nó bằng dlv core để điều tra sau sự cố (post-mortem). Đo thật trong Go: bật GOTRACEBACK=crash sinh core dump 40 MB, dlv core dựng lại ngăn xếp tới đúng dòng gây lỗi dù tiến trình đã chết.

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

Mutex profile trong Go: tìm khóa nào là nút thắt tranh chấp, thứ CPU profile không thấy

Benchmark cho biết chậm, nhưng không cho biết khóa nào nghẽn. Mutex profile đo tổng thời gian goroutine phải chờ khóa. Đo thật: 10 goroutine tranh một mutex nóng tích lũy 20,8 giây chờ, 100% quy về đúng khóa đó, khóa nguội bị loại. Cách bật, phân tích, và sửa. Go 1.23.

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

PGO trong Go: compiler dùng profile production để tối ưu, và vì sao benchmark nhỏ không thấy gì

Profile-guided optimization cho compiler dùng profile CPU chạy thật để devirtualize suy đoán những lời gọi interface mà phân tích tĩnh bó tay. Đo thật: PGO devirtualize được h.Chay khi tĩnh không làm được, nhưng benchmark micro gần như không đổi — lợi ích thật là 2-14% trên app lớn. Go 1.23.