Khắc phục sự cố mất ổn định dịch vụ Kagi.com
- Đang điều tra - Sự cố phát sinh sau khi triển khai và đội ngũ đang xử lý. (12 tháng 1, 16:45 UTC)
- Đang giám sát - Đã hoàn tác thay đổi cấu hình được cho là nguyên nhân của sự cố và đang tiếp tục giám sát để dịch vụ trở lại bình thường. (12 tháng 1, 18:30 UTC)
- Cập nhật - Để khôi phục hoàn toàn tính ổn định, sẽ tạm thời ngắt lưu lượng và chuyển hướng người dùng đến trang này. Sẽ cung cấp thêm chi tiết khi tình hình tiến triển trong lúc khôi phục tải cho dịch vụ theo cách có kiểm soát. (12 tháng 1, 20:26 UTC)
- Đang giám sát - Lưu lượng đã được khôi phục và đang tiếp tục theo dõi để dịch vụ trở lại hoàn toàn bình thường. (12 tháng 1, 21:14 UTC)
- Đã giải quyết - Tất cả dịch vụ đang hoạt động bình thường. Bày tỏ lời cảm ơn tới người dùng đã chờ trong lúc sự cố được khắc phục.
Phân tích hậu sự cố
- Zac, lãnh đạo kỹ thuật của Kagi, đã chia sẻ bản phân tích hậu sự cố chi tiết về đợt gián đoạn dịch vụ tuần trước.
- Để ứng phó với sự cố này, kỹ sư cấp cao Seth và kỹ sư DevOps Luan đã cùng phối hợp xử lý.
- Có những tác nhân lạm dụng dịch vụ và khai thác các điểm nghẽn của hạ tầng; nhóm đã thực hiện các biện pháp giảm thiểu ngay lập tức và đang cải thiện nhiều khía cạnh trong mã nguồn cũng như truyền thông.
Diễn biến sự cố
- Khoảng 5 giờ 30 chiều ngày 12 tháng 1, nhóm nhận biết có vấn đề hạ tầng thông qua giám sát nội bộ và các báo cáo sự cố từ người dùng.
- Bản chất của sự cố khiến người dùng ở nhiều khu vực gặp tình trạng tải chậm hoặc hết thời gian chờ trang.
- Việc xử lý mất khá nhiều thời gian, và bài viết giải thích bối cảnh, diễn tiến cũng như kế hoạch sắp tới.
Quá trình khắc phục sự cố kỹ thuật
- Ban đầu, sự cố xảy ra trùng với việc vô tình nâng cấp thêm tài nguyên RAM cho VM.
- Hệ thống giám sát báo cáo độ trễ cao và vấn đề với connection pool cơ sở dữ liệu của ứng dụng.
- Connection pool đã đạt trạng thái bão hòa, nghĩa là tổng số kết nối đã vượt quá giới hạn kết nối tối đa được cấu hình.
- Trong lúc đánh giá tình trạng nội bộ của cơ sở dữ liệu và hiệu năng truy vấn, nhóm đã thử thay thế một số instance để xem có giúp giảm tắc nghẽn hay không.
- Việc thay thế một phần instance có vẻ hữu ích, nên nhóm đã tạm dừng lưu lượng người dùng để đặt lại hoàn toàn tất cả connection pool cùng lúc.
- Khi xem xét trạng thái cơ sở dữ liệu, nguyên nhân gốc đã trở nên rõ ràng: mức độ tranh chấp cao trên các hàng trong bảng người dùng.
- Sự tranh chấp này làm tăng mạnh độ trễ ghi, tạo backpressure lên connection pool của ứng dụng, và cuối cùng làm cạn kiệt toàn bộ các kết nối khả dụng.
- Từ trước đến nay, Kagi sử dụng cơ sở dữ liệu single-core rẻ nhất có trên GCP, điều này luôn tiềm ẩn nguy cơ khiến cơ sở dữ liệu dễ bị tê liệt.
- Nhóm đã xác định được các tác nhân xấu, bao gồm những tài khoản được tạo trong vòng 24 giờ và một tài khoản người dùng duy nhất đã thực hiện hơn 60.000 lượt tìm kiếm trong thời gian ngắn.
- Nhóm đã gỡ quyền tìm kiếm của tài khoản đó và phát hành một hotfix để vô hiệu hóa thao tác ghi cụ thể gây ra vấn đề.
- Đến nửa đêm, sự cố đã được giải quyết hoàn toàn, và nhóm tiếp tục giám sát chặt chẽ các tín hiệu cho thấy những tác nhân này quay trở lại.
Hành động tiếp theo
- Nhóm đã rút ra nhiều bài học từ sự cố này và đã bắt đầu triển khai ngay các kế hoạch nhằm tăng cường hệ thống hơn nữa cũng như cải thiện quy trình truyền thông khi xảy ra sự cố.
- Trước hết, nhóm thừa nhận rằng các cập nhật trên trang trạng thái đã không đủ nhanh.
- Nhóm sẽ chuyển sang một nền tảng trang trạng thái cho phép công khai giám sát nội bộ tự động tới người dùng dễ dàng hơn, ताकि người dùng có thể nắm tình trạng sức khỏe của nền tảng theo thời gian thực.
- Nhóm đang trực tiếp giảm thiểu các truy vấn gây ra vấn đề và chạy kiểm thử tải để xem còn các điểm yếu tương tự nào khác hay không.
- Nhóm sẽ cài đặt thêm giám sát để nhanh hơn trong việc chỉ đúng vị trí cần chú ý trong hạ tầng, tránh lãng phí thời gian đuổi theo tín hiệu sai như lần này.
- Nhóm đang tăng cường các hệ thống phát hiện kiểu lạm dụng này; vì chúng không chỉ ảnh hưởng hiệu năng mà còn trực tiếp làm phát sinh chi phí, nên cần thiết lập các giới hạn tự động để thực thi.
- Các giới hạn mới đã được áp dụng ngay tại thời điểm bài viết này được đăng, và nhóm sẽ theo dõi tác động của chúng cũng như tiếp tục điều chỉnh khi cần.
- Nếu bạn cho rằng quyền truy cập vào Kagi của mình bị chặn nhầm, hãy liên hệ support@kagi.com.
Ý kiến của GN⁺
- Kagi đã gặp vấn đề độ trễ ghi do tranh chấp hàng trong bảng người dùng, điều này tạo backpressure lên connection pool của ứng dụng và dẫn đến gián đoạn dịch vụ.
- Vấn đề này là hệ quả của rủi ro phát sinh từ việc Kagi sử dụng cơ sở dữ liệu single-core rẻ nhất trên GCP.
- Thông qua sự cố này, đội ngũ Kagi cho thấy nỗ lực nâng cao tính ổn định và minh bạch của dịch vụ bằng cách tăng cường hệ thống, cải thiện giao tiếp với người dùng và thiết lập các giới hạn tự động để ngăn chặn lạm dụng. Những nỗ lực này phản ánh cam kết của Kagi trong việc cung cấp một dịch vụ đáng tin cậy hơn cho người dùng.
1 bình luận
Ý kiến trên Hacker News
Ý kiến về sự cố xảy ra đồng thời với đợt nâng cấp hạ tầng
Trải nghiệm của người dùng về trang trạng thái của Kagi
Bình luận chia sẻ kinh nghiệm cá nhân
Bình luận về trải nghiệm của startup
Bình luận về khả năng quan sát đối với hệ thống nội bộ
Ý kiến của người dùng trả phí về độ tin cậy của Kagi
Bình luận về scraper gây ra gián đoạn dịch vụ
Bình luận về trải nghiệm dùng Kagi và bài phân tích sau sự cố
Bình luận về cơ sở dữ liệu một lõi dùng trên GCP
Bình luận về automated scraping