Linux 01/09/2026 9 phút

Mở kết nối mới rồi hỏi một câu tốn đúng hai vòng khứ hồi — hỏi cùng câu đó trên kết nối có sẵn tốn một; giữa hai châu lục, khác biệt là 21 mili giây mỗi lần gọi

'Dùng bể kết nối' là lời khuyên ai cũng biết — bài này đo nó đáng bao nhiêu, bằng đơn vị duy nhất mang đi được: vòng khứ hồi. Đo thật cho ba con số rơi đúng vào bội số nguyên của RTT. Trên máy local nó chỉ tiết kiệm một phần tư mili giây, nên không đánh giá nổi ở đó; trong sản phẩm khác vùng, một dịch vụ gọi 20 lượt xuống DB cộng thêm 420 ms chỉ vì không tái dùng kết nối.

Backend 01/09/2026 8 phút

Một kết nối Redis duy nhất nhảy từ 25.850 lên 1.136.364 lệnh/giây mà không đổi một dòng cấu hình — vì nút thắt chưa bao giờ là CPU, mà là lượt đi về

Redis xử lý lệnh bằng một luồng duy nhất, nghe như lãng phí trên máy 16 nhân. Đo thật cho thấy nút thắt nằm ở chỗ khác: một luồng vẫn tăng gần tuyến tính tới 8 kết nối, và một kết nối đơn dùng đường ống 64 đạt 1,1 triệu lệnh/giây — gấp 44 lần cùng kết nối đó không đường ống. Không đường ống, Redis không dùng hết nổi một nhân vì phần lớn thời gian nằm trong lời gọi đọc/ghi socket, mỗi lời gọi mang đúng một lệnh.

Linux 01/09/2026 8 phút

Vượt giới hạn bộ nhớ đúng 17% làm giá mỗi trang nhảy từ 0,01 lên 4,82 µs — gần 500 lần, không có bậc trung gian; và cái bẫy thật của swap là nó giữ tiến trình sống thoi thóp thay vì cho chết hẳn

Có nên tắt swap không — câu này được tranh cãi nhiều hơn được đo. Đo thật: không swap thì vượt giới hạn là bị giết ngay; có swap thì tiến trình sống, health check vẫn 200, dashboard vẫn xanh, mà mỗi yêu cầu chậm 500 lần. Không cảnh báo nhị phân nào bắt được trạng thái đó. Đây là lý do Kubernetes mặc định đòi tắt swap — và vì sao vẫn nên giữ nó với swappiness thấp.

Linux 01/09/2026 9 phút

Bốn loại không gian tên cộng lại chỉ tốn 93 µs — riêng cái mạng ngốn 540 µs, gấp gần sáu lần cả bốn cái kia; và tháo nó ra còn lâu hơn dựng nó lên

Không phải mọi vách ngăn trong container đều đắt ngang nhau. Đổi tên máy, đánh số lại bảng tiến trình gần như miễn phí; nhưng dựng riêng một ngăn xếp mạng — bảng định tuyến, netfilter, veth — tốn 540 µs mỗi lần tạo và 1,7 lần thông lượng mỗi gói tin. Nếu tác vụ không cần cách ly mạng, đừng trả cái giá đó.

Backend 01/09/2026 8 phút

Cùng một chuỗi 1024 byte tốn 1.328 hay 2.608 byte tuỳ cách bạn ghi nó vào Redis — chênh 96% mà không đổi một ký tự dữ liệu

Đào vào con số 185 byte cho mỗi khoá chứa 100 byte dữ liệu, và tìm ra ba cách ghi cùng một chuỗi cho ba lượng bộ nhớ khác nhau. Phụ trội cố định ~64 byte mỗi khoá; một khoá 8 byte dữ liệu tốn 72 byte, gấp 9 lần. Ranh giới 44 byte đổi embstr sang raw. Và dựng chuỗi bằng APPEND chiếm gần gấp đôi vì Redis cấp phát tăng gấp bội. FLUSHALL cũng không trả RAM về hệ điều hành.

Linux 01/09/2026 9 phút

Một lần tra tên mất 24 giây trong pod Kubernetes — thêm đúng một dấu chấm ở cuối tên, còn 1,2 mili giây; hai mươi nghìn lần nhanh hơn chỉ bằng một ký tự

getaddrinfo trên IP mất 2,2 µs; trên một tên không tồn tại mất 1.046 lần thế. Rồi cấu hình ndots:5 mặc định của Kubernetes biến một lần tra thành sáu câu hỏi, và trong môi trường tôi đo, năm câu đầu im lặng chờ hết hạn — cộng lại 24 giây. Dấu chấm cuối bảo trình phân giải 'đây là tên tuyệt đối, đừng đoán'. Cộng thêm cái bẫy JVM cache DNS vĩnh viễn.