CodeReady
Quay lại danh sách case study

Xử lý lỗi kết nối cơ sở dữ liệu đột ngột

Ứng xử khi ứng dụng Node.js mất kết nối cơ sở dữ liệu MongoDB hoặc PostgreSQL giữa chừng.

Bối cảnh

Trong một hệ thống API bán hàng đang chạy thực tế, kết nối đến database thỉnh thoảng bị rớt do mạng nội bộ không ổn định.

Vấn đề cần xử lý

Khi database mất kết nối, server Node.js bị sập hoàn toàn (crash) do không bắt được ngoại lệ chưa xử lý, làm gián đoạn dịch vụ của khách hàng.

Hướng xử lý đề xuất

Em cấu hình lại thư viện kết nối database để tự động thử lại (reconnect), đồng thời thêm các bộ lắng nghe sự kiện lỗi như 'error' và 'disconnect' để ghi log cảnh báo mà không làm chết tiến trình chính.

Câu trả lời mẫu khi phỏng vấn

Khi gặp tình huống này, việc đầu tiên em làm là thêm cơ chế tự động kết nối lại (reconnection logic) ở tầng cấu hình DB. Em cũng sử dụng try-catch ở các hàm truy vấn và bắt sự kiện unhandledRejection để server không bị crash đột ngột.

Trade-off

Việc tự động kết nối lại liên tục có thể làm quá tải database nếu hệ thống gặp sự cố lớn. Do đó cần đặt giới hạn số lần thử lại và thời gian chờ tăng dần (exponential backoff).

Kết quả kỳ vọng

Hệ thống tự động phục hồi khi mạng ổn định trở lại và giảm thiểu tối đa thời gian downtime của API.

Bài học khi trả lời phỏng vấn

Không bao giờ được bỏ qua việc xử lý ngoại lệ ở tầng kết nối hạ tầng trong các ứng dụng Backend.