Linux 01/09/2026 9 phút

nproc bên trong container báo 16 nhân trong khi quota chỉ cho chạy bằng 1 — và vì tin lời nó, runtime tạo 32 luồng, làm chậm 44% và giãn đuôi trễ gấp đôi

cgroup không giới hạn bạn thấy bao nhiêu nhân, nó giới hạn bạn được chạy bao nhiêu thời gian. Nhưng nginx, Go, Node, JVM cũ đều tự chọn số worker theo nproc — và với quota 1 nhân, chúng đẻ ra 16. Đo thật: 32 luồng cho 1 nhân làm p99 xấu gấp đôi. Cộng thêm cái bẫy bộ nhớ: bộ đệm trang bẩn khiến OOM dù anon gần bằng 0.

Linux 01/09/2026 8 phút

Đọc 100 MB từ /dev/random mất 138 ms và entropy_avail không giảm một bit — cái bẫy 'random sẽ chặn' đã chết từ nhân 5.6

'Đừng dùng /dev/random, nó sẽ chặn' là một trong những lời khuyên Linux được lặp nhiều nhất — và sai từ nhân 5.6. Tôi đo: /dev/random và /dev/urandom cho cùng 780 MB/s, entropy không tiêu hao, còn rand() nhanh gấp mười ở 16 byte nhưng CHẬM nhất ở 4 KB và không đoán nổi ai dùng nó cho bảo mật. Lập luận 'dùng RNG yếu cho nhanh' không còn cơ sở đo lường.

Linux 01/09/2026 9 phút

Ghi một thông điệp thành hai lần thay vì một làm gấp đôi độ trễ — nhưng chỉ trên mạng thật; trên máy lập trình viên lỗi này vô hình hoàn toàn

Hai thuật toán TCP, mỗi cái hợp lý khi đứng riêng — Nagle giữ gói nhỏ chờ ACK, delayed ACK giữ ACK chờ dữ liệu — gặp nhau trong mẫu ghi–ghi–đọc thì khoá chéo nhau như hai người quá lịch sự ở cửa. Đo thật: trên cùng máy bốn cấu hình giống hệt, thêm 20 ms độ trễ thì một dòng gấp đôi ba dòng kia. Độ trễ mạng không làm lộ lỗi có sẵn — nó là điều kiện để lỗi tồn tại.

Backend 01/09/2026 7 phút

Một lệnh SET thiếu đúng chữ KEEPTTL biến mọi phiên đăng nhập thành bất tử — và ba lỗi Redis khác chạy hoàn hảo ở dev rồi sập ở production

Bốn lỗi có ở gần như mọi hệ thống, mỗi cái kèm số đo: khoá không TTL rò rỉ 15 MB âm thầm; KEYS chặn 38 ms ở 500 nghìn khoá và 263 ms ở 2 triệu trong khi SCAN gần như không đổi; một SET ghi đè xoá TTL làm phiên không bao giờ hết hạn; bốn khoá riêng tốn hơn một Hash 43%. Điểm chung: không cái nào báo lỗi, tất cả chỉ lộ ra ở quy mô thật.

Linux 01/09/2026 8 phút

Hai tiến trình cho RSS giống hệt nhau — 4.105 MB — nhưng một bên tốn 526 MB thật, bên kia 4.050 MB; RSS không sai, nó trả lời một câu hỏi khác câu bạn đang hỏi

Khi cần biết một nhóm tiến trình ăn bao nhiêu RAM, RSS là con số sai — và nó sai theo cách nguy hiểm: hai thí nghiệm khác nhau đúng một dòng (con đọc vs con ghi) cho RSS y hệt trong khi bộ nhớ thật chênh 8 lần. Lý do là copy-on-write của fork, và con số cộng-lại-được là PSS. Đây là vì sao cộng RSS của các worker prefork luôn vượt xa RAM máy.