Bài viết mới nhất

Tổng 1741 bài
Backend 01/09/2026 8 phút

Bật TLS cho Redis chậm hơn 11,5% khi gọi từng lệnh — nhưng gộp thành đường ống thì nhanh bằng bản không mã hoá; cái giá thật nằm ở chỗ khác: 40% CPU

Redis mặc định không mật khẩu, không mã hoá, ai cũng làm được mọi thứ. Đo hai lớp bảo vệ và cái giá thật của từng lớp: ACL gần như miễn phí và chặn được lớp lỗi lớn nhất; còn TLS thì bất ngờ — chi phí mã hoá tính trên bản ghi chứ không trên lệnh, nên đường ống 100 lệnh làm nó gần như biến mất (477.027 so với 461.274/giây), nhưng CPU máy chủ vẫn nhảy từ 38,71% lên 54,26% cho cùng một lượng việc.

DevOps 01/09/2026 8 phút

Khôi phục cả cụm Kubernetes từ snapshot mất đúng 77 giây — và công cụ để làm việc đó lại nằm trong chính cái container bạn vừa tắt

Khôi phục thật từ một snapshot 1,1 MB trên cụm dựng riêng để phá: 77 giây từ lúc dừng API server tới lúc nó sống lại. Ba cái bẫy đo được — etcdutl không có trên node mà nằm trong pod etcd đã chết, thư mục khôi phục phình thành 63 MB, và điều quan trọng nhất: khôi phục etcd không chọn lọc được. Cái tạo trước khi chụp về đủ, cái tạo sau khi chụp mất sạch không một dòng cảnh báo — đây là nút hoàn tác toàn cục, không phải Ctrl+Z một thao tác.

DevOps 01/09/2026 8 phút

Cùng một ứng dụng: Compose khởi động 0,9 giây, Kubernetes 1,2 giây — và Kubernetes trần trụi vẫn mất yêu cầu khi cập nhật y hệt Compose

Câu hỏi 'Kubernetes hay chỉ Docker Compose' thường được trả lời bằng niềm tin. Dựng cùng một ứng dụng hai container bằng cả hai rồi đo song song: bốn chỉ số đầu gần hoà (K8s không chậm hơn, không tốn RAM container hơn), nhưng K8s mang 743 MB hạ tầng cố định. Khác biệt thật ở cập nhật: K8s một bản không probe mất yêu cầu y như Compose; chỉ nhiều bản + readinessProbe + preStop mới cho 0 lỗi. Kubernetes không tặng uptime, nó tặng cơ chế.

Backend 01/09/2026 8 phút

Đặt volatile-lru khi không khoá nào có TTL chính là tắt hẳn việc dọn dẹp — Redis từ chối ghi trong khi 166.000 khoá bỏ được vẫn nằm nguyên trong RAM

Khi Redis chạm trần bộ nhớ, chính sách maxmemory quyết định nó dọn gì. Đo tám chính sách trên cùng một phép thử: volatile-lru với dữ liệu không TTL cho kết quả y hệt noeviction (0 khoá bị đuổi, 27.610 lỗi ghi) — cái bẫy dễ vấp nhất. Và LRU của Redis là gần đúng (lấy mẫu 5 khoá) nên chỉ giữ được 545/1000 khoá nóng, trong khi LFU giữ đủ 1.000/1.000 mà không cần chỉnh gì.

Linux 01/09/2026 7 phút

nice không làm gì cả cho tới khi tôi ghim hai tiến trình vào cùng một nhân — rồi tỉ lệ nhảy thành 98,7 trên 1,3; đây là điều kiện không tài liệu nào nhấn mạnh

CFS chia CPU đều 1/N như nó hứa. Nhưng nice 19 — mức ưu tiên thấp nhất — vẫn nhận đúng một nửa CPU, cho tới khi ép cả hai tiến trình vào cùng một nhân; lúc đó tỉ lệ khớp chính xác bảng trọng số của CFS. Lý do: nice là trọng số trong MỘT hàng đợi chạy, và hai tiến trình ở hai nhân khác nhau không có gì để cân. Trên máy nhiều nhân, nice chỉ có tác dụng khi số tiến trình vượt số nhân.

DevOps 01/09/2026 9 phút

PostgreSQL trong Kubernetes chạy 10.366 tps và khởi động lại trong 0,3 giây — nhưng cordon đúng một node là pod Pending vĩnh viễn, vì dữ liệu không đi theo được

Dựng PostgreSQL bằng StatefulSet, đo phần chạy tốt rồi đo đúng chỗ nó gãy. Phần tốt: 10.366 tps, dừng sạch trong 13 ms, khởi động lại 0,3 giây, giữ nguyên định danh và volume. Phần không sửa được bằng YAML: PersistentVolume ghim vào một node, cordon node đó là pod Pending mãi mãi vì dữ liệu nằm trên đĩa node đó. Kubernetes dựng lại pod giỏi, nhưng chỉ ở nơi có dữ liệu — và nó không biết cái nào là bản chính.