Ứng dụng thông báo hoặc cập nhật trạng thái có thể mở kết nối thành công nhưng hiển thị dữ liệu chậm. Nếu chỉ đo thời gian nhận phản hồi đầu tiên, bạn sẽ bỏ sót vấn đề ở phần luồng phía sau.
SSE khác một phản hồi thông thường
SSE chuyển sự kiện từ server tới client trên một luồng; định dạng dùng text/event-stream. EventSource có cơ chế kết nối lại, nhưng phục hồi dữ liệu còn tùy cách ứng dụng xử lý event ID. Xem MDN về SSE.
Đo ba mốc thay vì một
- Thời gian từ khi gửi yêu cầu đến sự kiện đầu tiên.
- Khoảng cách giữa các sự kiện đã có dấu thời gian hoặc số thứ tự.
- Thời điểm kết nối kết thúc và sự kiện cuối cùng client thực nhận.
Nếu so thời gian giữa hai máy, kiểm tra đồng bộ đồng hồ. Một log ghi “đã gửi” cần được đối chiếu với chặng nào đã thực sự nhận; ghi vào buffer chưa chắc đồng nghĩa client đã thấy sự kiện.
Khoanh vùng buffering
- Tạo endpoint thử phát vài sự kiện nhỏ theo nhịp đã biết trên hệ thống được phép.
- So sánh tuyến trực tiếp và tuyến qua proxy với cùng client.
- Đối chiếu ứng dụng, framework, reverse proxy và CDN do bạn quản lý.
- Kiểm tra nén và cơ chế flush theo tài liệu của từng lớp.
- Thay cấu hình của đúng route thử, đo lại rồi mới xem xét áp dụng rộng hơn.
Ví dụ minh họa
Server thử phát một sự kiện mỗi vài giây, nhưng trình duyệt nhận nhiều sự kiện cùng lúc. Dấu hiệu này gợi ý dữ liệu có thể bị giữ ở một lớp, không đủ chứng minh IP lỗi. Nếu tuyến trực tiếp cũng gặp, ưu tiên kiểm tra phía ứng dụng; nếu chỉ một tuyến gặp, đối chiếu các trung gian khác biệt.
Timeout và kết nối lại
Ghi xem luồng rớt khi idle hay trong lúc có dữ liệu. Kiểm tra ngân sách timeout và heartbeat mà ứng dụng hỗ trợ. Đừng tăng mọi timeout lên rất lớn trước khi hiểu tài nguyên giữ bởi từng kết nối. Khi reconnect, thử tình huống thiếu hoặc trùng sự kiện bằng dữ liệu thử.
Báo cáo lỗi thế nào?
Gửi nhịp phát dự kiến, mốc nhận, thời điểm đóng, tuyến kết nối và client; che token trong URL. Không tải log chứa nội dung khách hàng lên bình luận công khai. Đọc thêm hướng dẫn timeout để phân biệt lỗi trước kết nối với lỗi của luồng đã mở.