Giải quyết tình trạng API Latency tăng vọt tại thời điểm triển khai - Trường hợp Django + Gunicorn
- Hệ thống backend được cấu thành từ Django + Gunicorn
- Đã phát hiện vấn đề API Latency tăng đột ngột mỗi khi triển khai
- Khi xem xét nguyên lý của Gunicorn, có những phần xảy ra Cold Start
- Khi phân tích mã nội bộ của Django, đã phát hiện một số thành phần không được preload trước dù đã dùng tùy chọn preload khi fork ở master worker process, và đã giải quyết được vấn đề
Điều rút ra
- Với các web framework được nhiều người dùng như Django, phần lớn cơ chế hoạt động của chúng thường có độ tin cậy cao, nên người dùng thực tế cũng dễ có xu hướng mặc định rằng mọi thứ đều sẽ như vậy
- Tuy nhiên, khi xem mã thực tế, đã phát hiện có đoạn mã gây ra vấn đề, và có thể rút ra bài học rằng không nên quá tin tưởng tuyệt đối vào framework mình đang dùng
- Quá trình giải quyết vấn đề API Latency không dễ xác định nhanh chóng vì thiếu tài liệu phù hợp + thiếu hiểu biết đủ sâu về cấu trúc và cơ chế hoạt động bên trong + tâm lý ngại đào sâu vào codebase của dự án mã nguồn mở
- Trong quá trình này cũng có nhiều vấn đề phức tạp đan xen nên càng khó nắm bắt một cách đơn giản
- Cuối cùng đã có thể giải quyết bằng cách xem xét mã nội bộ của Django
- Qua đó, không chỉ nâng cao mức độ hiểu biết về các công cụ Django đang sử dụng, mà còn học được rằng việc xem mã bên trong có thể giúp tìm ra lời giải cho một số vấn đề khó
- Việc xác định nguyên nhân gốc rễ của vấn đề là rất quan trọng.
- Có thể giảm tần suất phát sinh API Latency bằng cách điều chỉnh điều kiện thành công của Health Check thành nhiều lần hơn hoặc lâu hơn, nhưng như vậy vẫn sẽ không giải quyết được vấn đề tận gốc
- Nếu tận dụng trí tuệ tập thể, có thể nhanh hơn trong việc xác định những điểm cần tập trung và tiếp thu nhiều kiến thức khác nhau
- Đã nhanh chóng chia sẻ vấn đề liên quan đến API Latency với tổ chức, và nhiều kỹ sư đã đưa ra các giả thuyết về những điểm có thể là nguyên nhân
- Nhờ đó có thể nhanh chóng tổng hợp các ý kiến này và tiếp thu nhanh kiến thức về những nơi cần tập trung xem xét
- Việc thiết lập môi trường tái hiện triệu chứng để giải quyết vấn đề là rất quan trọng
- Đã thành công trong việc tái hiện cùng một vấn đề ở môi trường local, và nhờ đó có thể xác nhận liệu vấn đề đã thực sự được giải quyết hay chưa
- Có thể nhận thức rõ tầm quan trọng của việc tái hiện triệu chứng khi giải quyết vấn đề
1 bình luận
Nhấn vào liên kết đọc thử thì thấy nội dung bài viết rất hay.