GitHub đã công bố kết quả điều tra sự cố gián đoạn dịch vụ trên diện rộng xảy ra ngày 17/8. Theo GitHub, nguyên nhân không đến từ mã nguồn hay thay đổi cấu hình, mà do “năng lực hạ tầng không theo kịp tốc độ tăng trưởng nhanh chóng của lượng sử dụng nền tảng”.
Sự cố lần này khiến nhiều dịch vụ của GitHub, bao gồm website, hệ thống xác thực, GitHub Actions, API, Pull Request và Issues, bị gián đoạn trong tổng cộng 7 giờ 47 phút.
GitHub cho biết lưu lượng truy cập nền tảng trong ngày 17/8 đạt mức cao nhất từ trước đến nay. Điều này khiến dung lượng của một thành phần hạ tầng quan trọng tại trung tâm dữ liệu ở khu vực miền Trung nước Mỹ không còn đáp ứng đủ nhu cầu. Áp lực sau đó lan sang các hệ thống khác, dẫn đến lỗi xác thực và hàng loạt dịch vụ hoạt động bất thường.
Trong quá trình khôi phục, một số dịch vụ tiếp tục phát sinh vấn đề do cơ chế tự động thử lại (retry) từ phía máy khách bị kích hoạt không đúng thời điểm. Các yêu cầu được gửi lại khiến lưu lượng hệ thống tiếp tục tăng, buộc đội ngũ kỹ thuật phải mất thêm nhiều thời gian mới có thể khôi phục hoàn toàn các dịch vụ của GitHub.
Đây cũng là sự cố dịch vụ nghiêm trọng thứ hai của GitHub trong tháng 8. Trước đó, GitHub Actions từng gặp sự cố vào ngày 6/8. GitHub cho biết điểm chung của cả hai sự cố đều nằm ở khả năng đáp ứng của hạ tầng, chứ không phải do lỗi mã nguồn hoặc thay đổi cấu hình.
Lượng sử dụng GitHub đã tăng mạnh trong thời gian gần đây. Từ tháng 4 đến nay, số lượt commit mỗi tháng đã tăng từ khoảng 1,4 tỷ lên 2,9 tỷ lần. Số lượng Pull Request được hợp nhất cũng như số kho mã nguồn mới được tạo tiếp tục tăng.
Để đáp ứng tốc độ tăng trưởng này, trong năm nay GitHub đã bổ sung hơn 3 triệu lõi CPU, 120 PB dung lượng lưu trữ tốc độ cao và mở rộng năng lực mạng. Công ty cũng đẩy nhanh quá trình chuyển các workload sang Microsoft Azure.
Hiện khoảng 58% tải của nền tảng GitHub đã được Azure đảm nhận, tăng mạnh so với mức 12% vào tháng 5. Bên cạnh đó, khoảng một nửa số hoạt động Git cũng đã được xử lý thông qua Azure.
Tuy nhiên, những biện pháp mở rộng hạ tầng này vẫn chưa hoàn toàn loại bỏ được nguy cơ quá tải khi lượng sử dụng GitHub tiếp tục tăng nhanh.
Trong thời gian tới, GitHub cho biết đội ngũ kỹ thuật sẽ tiếp tục tách biệt các hệ thống quan trọng trên nền tảng, nhằm giảm số lượng thành phần phụ thuộc lẫn nhau.
GitHub cũng sẽ thống nhất cơ chế giới hạn số lần thử lại và thời gian chờ giữa các dịch vụ. Mục tiêu là ngăn tình trạng khi một hệ thống gặp sự cố, hàng loạt máy khách hoặc dịch vụ khác tự động gửi lại yêu cầu quá nhiều lần, khiến lưu lượng tăng đột biến và làm sự cố ban đầu lan rộng thành chuỗi lỗi liên hoàn.
Qua sự cố lần này, vấn đề mà GitHub phải đối mặt không đơn thuần là bổ sung thêm máy chủ hay CPU, mà còn là khả năng thiết kế hạ tầng để chịu được mức tăng trưởng sử dụng rất nhanh và kiểm soát hiệu ứng dây chuyền khi một thành phần bị quá tải.
Sự cố lần này khiến nhiều dịch vụ của GitHub, bao gồm website, hệ thống xác thực, GitHub Actions, API, Pull Request và Issues, bị gián đoạn trong tổng cộng 7 giờ 47 phút.
Đây cũng là sự cố dịch vụ nghiêm trọng thứ hai của GitHub trong tháng 8. Trước đó, GitHub Actions từng gặp sự cố vào ngày 6/8. GitHub cho biết điểm chung của cả hai sự cố đều nằm ở khả năng đáp ứng của hạ tầng, chứ không phải do lỗi mã nguồn hoặc thay đổi cấu hình.
GitHub đang tăng trưởng nhanh
Lượng sử dụng GitHub đã tăng mạnh trong thời gian gần đây. Từ tháng 4 đến nay, số lượt commit mỗi tháng đã tăng từ khoảng 1,4 tỷ lên 2,9 tỷ lần. Số lượng Pull Request được hợp nhất cũng như số kho mã nguồn mới được tạo tiếp tục tăng.
Để đáp ứng tốc độ tăng trưởng này, trong năm nay GitHub đã bổ sung hơn 3 triệu lõi CPU, 120 PB dung lượng lưu trữ tốc độ cao và mở rộng năng lực mạng. Công ty cũng đẩy nhanh quá trình chuyển các workload sang Microsoft Azure.
Hiện khoảng 58% tải của nền tảng GitHub đã được Azure đảm nhận, tăng mạnh so với mức 12% vào tháng 5. Bên cạnh đó, khoảng một nửa số hoạt động Git cũng đã được xử lý thông qua Azure.
Tuy nhiên, những biện pháp mở rộng hạ tầng này vẫn chưa hoàn toàn loại bỏ được nguy cơ quá tải khi lượng sử dụng GitHub tiếp tục tăng nhanh.
Giảm nguy cơ sự cố dây chuyền
Trong thời gian tới, GitHub cho biết đội ngũ kỹ thuật sẽ tiếp tục tách biệt các hệ thống quan trọng trên nền tảng, nhằm giảm số lượng thành phần phụ thuộc lẫn nhau.
GitHub cũng sẽ thống nhất cơ chế giới hạn số lần thử lại và thời gian chờ giữa các dịch vụ. Mục tiêu là ngăn tình trạng khi một hệ thống gặp sự cố, hàng loạt máy khách hoặc dịch vụ khác tự động gửi lại yêu cầu quá nhiều lần, khiến lưu lượng tăng đột biến và làm sự cố ban đầu lan rộng thành chuỗi lỗi liên hoàn.
Qua sự cố lần này, vấn đề mà GitHub phải đối mặt không đơn thuần là bổ sung thêm máy chủ hay CPU, mà còn là khả năng thiết kế hạ tầng để chịu được mức tăng trưởng sử dụng rất nhanh và kiểm soát hiệu ứng dây chuyền khi một thành phần bị quá tải.
BÀI MỚI ĐANG THẢO LUẬN