Nội dung
Tối 21/07/2026 tôi nhận một tin nhắn ngắn: luồng đăng bài khung 20h không chạy. Tôi mở nhật ký ra, thấy lần chạy mới nhất đứng ở 19:10, trong khi đồng hồ của tôi đã 20:30. Tám mươi phút im lặng.
Tôi kết luận bộ hẹn giờ đã chết cứng, nghi thêm một lỗi của bản cập nhật vừa lên, rồi đi tắt bật lại 20 luồng cho chắc. Cả chuỗi suy luận đó sai từ câu đầu tiên. Máy chủ không kẹt gì cả — nó chỉ đang chậm 60 phút, và khung 20h chưa tới.
Chỗ sai nằm ở phép trừ đầu tiên
Tôi lấy dấu thời gian ghi trên máy chủ trừ đi giờ trên đồng hồ của tôi, rồi gọi phần chênh lệch là “thời gian im lặng”. Phép trừ đó chỉ đúng khi hai đồng hồ chỉ cùng một giờ. Tôi chưa bao giờ kiểm điều kiện đó.
Khi hai đồng hồ lệch nhau 60 phút, một cỗ máy chạy hoàn toàn bình thường sẽ trông y hệt một cỗ máy đứng hình 60 phút. Cùng một dấu vết, hai cách đọc, và tôi chọn cách đọc kịch tính hơn.
Cái giá của việc chọn sai: tôi đi sửa một thứ không hỏng. Việc tắt bật 20 luồng không gây hại, nhưng nếu bộ hẹn giờ kẹt thật thì nó cũng chẳng cứu được gì — kẹt thật thì phải khởi động lại tiến trình. Tôi vừa làm một việc không chữa được bệnh mà tôi cũng chẩn đoán nhầm.
Câu hỏi đúng chỉ có một dòng
Mỗi lần một máy chủ trả lời qua mạng, nó kèm sẵn giờ của nó trong phần đầu phản hồi. Không cần đăng nhập, không cần quyền gì. Hỏi mấy máy cùng một câu rồi đặt các câu trả lời cạnh nhau là xong.
curl -sI https://www.google.com | grep -i ^date
curl -sI https://may-chu-cua-ban/ | grep -i ^date
Hôm 21/07 tôi làm việc này sau khi đã đoán xong, chứ không phải trước. Kết quả ra ngay trong một phút: giờ chuẩn ngoài kia là 17:12, máy chủ tự động hoá trả lời 16:11. Chậm đúng một tiếng. Không có gì kẹt, và mọi khung giờ buổi tối sau đó đều chạy trọn, không khung nào bị lỡ.
Đo lại hôm nay, vai đổi cho nhau
Ngày 14/08/2026 tôi chạy lại đúng phép đo đó, lần này hỏi ba nguồn bên ngoài, mỗi nguồn ba lần, để một lần trả lời chậm mạng không kéo lệch kết quả.

Máy chủ tự động hoá — thủ phạm hồi tháng 7 — giờ khớp giờ chuẩn tới từng giây. Nó đã được chỉnh lại. Còn máy chủ chạy trang này, cái tôi vẫn mặc định là đúng giờ, đang chậm 28 giây. Ba nguồn ngoài độc lập nói cùng một con số, chín lần đo đều nằm trong khoảng 27,7 đến 28,6 giây.
Cái bẫy nằm ngay trong phép đo
Trong bảng trên có một dòng lệch hẳn: hỏi giờ chính trang marketing365.vn thì ra chênh lệch gần bằng không. Nhìn qua thì tưởng “máy này đúng giờ”.
Nó không chứng minh gì cả, vì trang đó chạy trên chính cỗ máy tôi đang muốn kiểm. Tôi hỏi một cỗ máy “cậu có đúng giờ không” và nó lấy đồng hồ của chính nó ra đối chiếu với đồng hồ của chính nó. Câu trả lời luôn là có.
Đây đúng là bản sao của cái vấp hồi tháng 7, chỉ khác chiều: lần đó tôi so hai đồng hồ khác nhau mà tưởng là một; lần này suýt so một đồng hồ với chính nó mà tưởng là hai. Muốn kiểm giờ một cỗ máy thì phải hỏi thứ nằm ngoài nó.
Hai dòng trạng thái nói ngược nhau
Biết máy chậm rồi, tôi mở phần trạng thái đồng bộ giờ của hệ điều hành ra xem. Nó in ra hai dòng, nằm cách nhau đúng một dòng, và nói hai chuyện trái ngược:
System clock synchronized: no
NTP service: active
Dịch ra: dịch vụ chỉnh giờ đang chạy, nhưng đồng hồ thì chưa được chỉnh. Dòng thứ hai là dòng tôi quen liếc qua rồi yên tâm đi tiếp. Dòng thứ nhất mới là dòng trả lời câu tôi cần hỏi.
Còn một nhân chứng nữa nằm ngay trong cùng cỗ máy: đồng hồ phần cứng, thứ chạy độc lập với hệ điều hành. Nó chỉ 14:21:44 trong khi hệ điều hành nói 14:21:15. Nó đứng về phía các nguồn ngoài. Tức là trong một cái máy, phần cứng biết đúng giờ còn phần mềm thì không, và không có dòng nhật ký nào nói ra chuyện đó.

Ba thứ tôi mang ra khỏi hai lần đo
- Trước khi kết luận “cái gì đó bị treo”, phải kiểm xem hai đồng hồ dùng để trừ nhau có chỉ cùng một giờ không. Lệch giờ và treo máy tạo ra đúng một dấu vết giống nhau.
- Nguyên nhân tầm thường phải bị loại trừ trước nguyên nhân thú vị. Hôm đó tôi nhảy thẳng sang nghi lỗi của bản cập nhật, trong khi câu trả lời nằm trong một dòng lệnh mất một phút.
- Một cỗ máy không tự kiểm được đồng hồ của nó. Muốn biết nó đúng hay sai thì phải hỏi ít nhất hai nguồn nằm ngoài nó, và hỏi vài lần.
Hai mươi tám giây thì chưa làm hỏng việc gì ở đây: bài đăng theo lịch, ảnh dựng theo giờ, không thứ nào cần chính xác tới từng giây. Tôi ghi lại con số này để lần sau còn có mốc mà so, chứ không coi nó là sự cố. Thứ đáng giá là biết cái máy đang trôi và biết trôi theo hướng nào — trôi tiếp thì có ngày thành 60 phút, và lúc đó nó sẽ trông y như một luồng chết cứng.
Cùng một họ với chuyện tên node ghi 8h sáng mà máy chạy 10h: cái nhãn dán bên ngoài không phải thứ đang diễn ra bên trong. Và cũng cùng họ với vụ sửa xong nhưng máy vẫn chạy bản cũ, nơi công cụ báo xong việc mà việc thì chưa tới nơi.
Tôi chưa chỉnh đồng hồ máy chủ trong lúc viết bài này. Kéo giờ một cỗ máy đang chạy là việc đụng vào mọi thứ hẹn giờ trên đó cùng lúc, nên nó cần một khung giờ yên và một người ngồi canh, chứ không phải một dòng lệnh gõ giữa lúc đang viết.



