Mục tiêu của chúng tôi là luôn phân phối mọi thông báo được gửi bằng FCM. Tuy nhiên, việc gửi mọi thông báo đôi khi sẽ dẫn đến trải nghiệm tổng thể không tốt cho người dùng. Trong các trường hợp khác, chúng tôi cần cung cấp các ranh giới để đảm bảo rằng FCM cung cấp dịch vụ có thể mở rộng cho tất cả người gửi. Các loại hạn mức và hạn ngạch được mô tả trong phần này giúp chúng tôi cân bằng những yếu tố quan trọng này.
Hạn chế số lượng tin nhắn truyền xuống
API HTTP phiên bản 1 đã giới thiệu hạn mức mỗi phút cho mỗi dự án đối với hoạt động nhắn tin xuôi dòng. Hạn mức mặc định là 600.000 thông báo mỗi phút, đủ cho hơn 99% nhà phát triển FCM, đồng thời bảo vệ tính ổn định của hệ thống và giảm thiểu tác động của các dự án có mức sử dụng tăng đột biến.
Mô hình lưu lượng truy cập đột biến có thể dẫn đến lỗi vượt quá hạn mức. Trong trường hợp vượt quá hạn mức, hệ thống sẽ phân phát mã trạng thái HTTP 429 (QUOTA_EXCEEDED) cho đến khi hạn mức được nạp lại trong phút tiếp theo. Phản hồi 429 cũng có thể được trả về trong trường hợp quá tải, vì vậy, bạn nên xử lý các phản hồi 429 theo các đề xuất đã xuất bản.
Xin lưu ý rằng:
- Hạn mức hạ lưu đo lường thư chứ không đo lường yêu cầu.
- Lỗi phía máy khách (mã trạng thái HTTP 400-499) được tính (ngoại trừ 429).
- Hạn mức được tính theo phút, nhưng các phút này không được căn chỉnh theo đồng hồ.
Hạn mức giám sát
Bạn có thể xem hạn mức, mức sử dụng và lỗi trên Google Cloud Console:
- Chuyển đến bảng điều khiển Google Cloud
- Chọn API và dịch vụ
- Trong danh sách bảng, hãy chọn Firebase Cloud Messaging API
- Chọn HẠN MỨC VÀ GIỚI HẠN HỆ THỐNG.
LƯU Ý: Các biểu đồ này không được căn chỉnh chính xác theo thời gian với hạn mức phút, tức là có thể xảy ra lỗi 429 khi lưu lượng truy cập có vẻ nằm trong hạn mức.
Yêu cầu tăng hạn mức
Trước khi yêu cầu tăng hạn mức, hãy đảm bảo rằng:
- Mức sử dụng của bạn thường xuyên ≥ 80% hạn mức trong ít nhất 5 phút liên tục mỗi ngày.
- Bạn có tỷ lệ lỗi ứng dụng < 5%, đặc biệt là trong thời gian lưu lượng truy cập cao nhất.
- Bạn tuân thủ các phương pháp hay nhất để gửi thông báo trên quy mô lớn.
Nếu đáp ứng các tiêu chí này, bạn có thể gửi yêu cầu tăng hạn mức lên đến +25% và FCM sẽ nỗ lực hết sức để đáp ứng yêu cầu (không đảm bảo tăng hạn mức).
Nếu bạn cần thêm hạn mức tin nhắn xuôi dòng do sắp ra mắt hoặc sự kiện tạm thời, hãy yêu cầu hạn mức ít nhất 15 ngày trước để có đủ thời gian xử lý yêu cầu. Đối với các yêu cầu lớn (>18 triệu thông báo mỗi phút), bạn cần thông báo trước ít nhất 30 ngày. Yêu cầu về sự kiện đặc biệt và yêu cầu ra mắt vẫn phải tuân thủ các yêu cầu về tỷ lệ lỗi của máy khách và các phương pháp hay nhất.
Bạn cũng có thể xem câu hỏi thường gặp về hạn mức FCM.
Giới hạn tin nhắn theo chủ đề
Tốc độ thêm hoặc xoá gói thuê bao chủ đề bị giới hạn ở mức 3.000 QPS cho mỗi dự án.
Để biết tốc độ gửi thông báo, hãy xem phần Điều tiết Fanout.
Điều tiết fanout
Phân phối tin nhắn là quá trình gửi một tin nhắn đến nhiều thiết bị, chẳng hạn như khi bạn nhắm đến các chủ đề và nhóm hoặc khi bạn sử dụng Trình soạn thảo thông báo để nhắm đến đối tượng hoặc phân khúc người dùng.
Quá trình truyền tin nhắn không diễn ra ngay lập tức, vì vậy, đôi khi bạn có nhiều quá trình truyền tin nhắn đang diễn ra đồng thời. Chúng tôi giới hạn số lượng thông báo truyền tin đồng thời cho mỗi dự án là 1.000. Sau đó, chúng tôi có thể từ chối các yêu cầu phân phối bổ sung hoặc hoãn phân phối các yêu cầu cho đến khi một số yêu cầu phân phối đang diễn ra hoàn tất.
Số lượng dự án yêu cầu phân phối đồng thời sẽ ảnh hưởng đến tốc độ phân phối thực tế có thể đạt được. Tốc độ phân phối 10.000 QPS cho một dự án riêng lẻ không phải là hiếm, nhưng con số đó không được đảm bảo và là kết quả của tổng tải trên hệ thống. Điều quan trọng cần lưu ý là dung lượng phân phối có sẵn được chia cho các dự án chứ không phải cho các yêu cầu phân phối. Vì vậy, nếu dự án của bạn có 2 hoạt động truyền tin đang diễn ra, thì mỗi hoạt động truyền tin sẽ chỉ thấy một nửa tốc độ truyền tin có sẵn. Cách được đề xuất để tối đa hoá tốc độ phân phối là chỉ có một hoạt động phân phối đang diễn ra tại một thời điểm.
Điều tiết thông báo có thể thu gọn
Như mô tả trong phần Thông báo có thể thu gọn, thông báo có thể thu gọn là những thông báo không có nội dung, được thiết kế để thu gọn lên trên nhau. Trong trường hợp nhà phát triển lặp lại cùng một thông báo cho một ứng dụng quá thường xuyên, chúng tôi sẽ trì hoãn (điều tiết) các thông báo để giảm tác động đến pin của người dùng.
Ví dụ: nếu bạn gửi số lượng lớn yêu cầu đồng bộ hoá email mới đến một thiết bị duy nhất, chúng tôi có thể trì hoãn yêu cầu đồng bộ hoá email tiếp theo trong vài phút để thiết bị có thể đồng bộ hoá ở tốc độ trung bình thấp hơn. Việc điều tiết này được thực hiện nghiêm ngặt để hạn chế tác động đến pin mà người dùng gặp phải.
Nếu trường hợp sử dụng của bạn yêu cầu các mẫu gửi hàng loạt có tốc độ cao, thì thông báo không thu gọn có thể là lựa chọn phù hợp. Đối với những thông báo như vậy, hãy nhớ thêm nội dung vào những thông báo đó để giảm chi phí pin.
Chúng tôi giới hạn số lượng thông báo có thể thu gọn ở mức 20 thông báo cho mỗi ứng dụng trên mỗi thiết bị, với tần suất 1 thông báo sau mỗi 3 phút.
Tốc độ gửi tin nhắn tối đa đến một thiết bị
Đối với Android, bạn có thể gửi tối đa 240 tin nhắn mỗi phút và 5.000 tin nhắn mỗi giờ đến một thiết bị. Ngưỡng cao này nhằm cho phép lưu lượng truy cập tăng đột biến trong thời gian ngắn, chẳng hạn như khi người dùng tương tác nhanh chóng qua cuộc trò chuyện. Giới hạn này giúp ngăn chặn lỗi trong logic gửi vô tình làm tiêu hao pin trên thiết bị.
Đối với iOS, chúng tôi sẽ trả về lỗi khi tốc độ vượt quá giới hạn của APNs.