Trang này trình bày chi tiết các hạn mức có thể mở rộng và dựa trên mức sử dụng cho Cloud Functions theo Gói giá linh hoạt (trả tiền theo mức dùng). Các hạn mức này áp dụng cho các dự án Firebase triển khai hàm vào môi trường thời gian chạy Node.js 10.
Gói giá linh hoạt cung cấp miễn phí một lượng lớn lời gọi, thời gian tính toán và lưu lượng truy cập Internet. Tuy nhiên, việc triển khai hàm sẽ phát sinh các khoản phí nhỏ cho dung lượng lưu trữ được dùng cho vùng chứa của hàm. Hãy xem Câu hỏi thường gặp về Firebase FAQ để biết thêm thông tin.
Hạn mức cho Firebase bao gồm 4 lĩnh vực:
Giới hạn về tài nguyên
Các giới hạn này ảnh hưởng đến tổng lượng tài nguyên mà các hàm của bạn có thể tiêu thụ.
Giới hạn thời gian
Các giới hạn này ảnh hưởng đến thời gian chạy của các thành phần.
Giới hạn số lượng yêu cầu
Các giới hạn này ảnh hưởng đến tốc độ mà bạn có thể gọi API Firebase để quản lý các hàm.
Giới hạn về mạng
Các giới hạn này ảnh hưởng đến giới hạn về kết nối gửi đi và thực thể.
Các loại giới hạn được mô tả chi tiết hơn ở phần bên dưới. Sự khác biệt giữa các giới hạn cho Firebase (thế hệ thứ 1) và Firebase (thế hệ thứ 2) được lưu ý nếu có.
Giới hạn về tài nguyên
Giới hạn về tài nguyên ảnh hưởng đến tổng lượng tài nguyên mà các hàm của bạn có thể tiêu thụ. Phạm vi theo khu vực là trên mỗi dự án và mỗi dự án duy trì các giới hạn riêng.
| Hạn mức | Mô tả | Giới hạn (thế hệ thứ 1) | Giới hạn (thế hệ thứ 2) | Có thể tăng | Phạm vi |
|---|---|---|---|---|---|
| Số lượng hàm | Tổng số hàm có thể được triển khai trên mỗi khu vực | 1.000 | 1.000 trừ số lượng dịch vụ Cloud Run đã triển khai | Không | trên mỗi khu vực |
| Kích thước triển khai tối đa | Kích thước tối đa của một lần triển khai hàm | 100 MB (đã nén) đối với các nguồn. 500 MB (chưa nén) đối với các nguồn cộng với các mô-đun. |
Không áp dụng | Không | trên mỗi hàm |
| Kích thước tối đa của yêu cầu HTTP chưa nén | Dữ liệu được gửi đến các hàm HTTP trong một yêu cầu HTTP | 10MB | 32MB | Không | trên mỗi lời gọi |
| Kích thước tối đa của phản hồi HTTP chưa nén | Dữ liệu được gửi từ các hàm HTTP trong một phản hồi HTTP | 10MB | 10 MB đối với các phản hồi phát trực tuyến. 32 MB đối với các phản hồi không phát trực tuyến. |
Không | trên mỗi lời gọi |
| Kích thước tối đa của sự kiện đối với các hàm dựa trên sự kiện | Dữ liệu được gửi trong các sự kiện đến các hàm ở chế độ nền | 10MB | 512 KB đối với các sự kiện Eventarc. 10 MB đối với các sự kiện cũ. |
Không | trên mỗi sự kiện |
| Bộ nhớ tối đa của hàm | Lượng bộ nhớ mà mỗi thực thể hàm có thể sử dụng | 8GiB | 32GiB | Không | trên mỗi hàm |
| Bộ nhớ tối đa của dự án | Lượng bộ nhớ (tính bằng byte) mà một dự án có thể sử dụng. Lượng bộ nhớ này được đo bằng tổng số bộ nhớ do người dùng yêu cầu trên các thực thể hàm trong khoảng thời gian 1 phút. | Tuỳ thuộc vào khu vực đã chọn. Giới hạn này có thể cao hơn ở các khu vực có công suất cao hoặc thấp hơn ở các khu vực mới mở. | Không áp dụng | Có | trên mỗi dự án và khu vực |
| CPU tối đa của dự án | Lượng CPU (tính bằng milli vCPU) mà một dự án có thể sử dụng. Lượng CPU này được đo bằng tổng số CPU do người dùng yêu cầu trên các thực thể hàm trong khoảng thời gian 1 phút. | Tuỳ thuộc vào khu vực đã chọn. Giới hạn này có thể cao hơn ở các khu vực có công suất cao hoặc thấp hơn ở các khu vực mới mở. | Không áp dụng | Có | trên mỗi dự án và khu vực |
Giới hạn thời gian
| Hạn mức | Mô tả | Giới hạn (thế hệ thứ 1) | Giới hạn (thế hệ thứ 2) | Có thể tăng | Phạm vi |
|---|---|---|---|---|---|
| Thời lượng tối đa của hàm | Thời lượng tối đa mà một hàm có thể chạy trước khi bị chấm dứt bắt buộc | 540 giây |
|
Không | trên mỗi lời gọi |
Giới hạn số lượng yêu cầu
| Hạn mức | Mô tả | Giới hạn (thế hệ thứ 1) | Giới hạn (thế hệ thứ 2) | Có thể tăng | Phạm vi |
|---|---|---|---|---|---|
| Lệnh gọi API (ĐỌC) | Các lệnh gọi để mô tả hoặc liệt kê các hàm thông qua API Firebase | 5.000 trên 100 giây | 1.200 trên 60 giây | Chỉ dành cho thế hệ thứ 1 | trên mỗi dự án (thế hệ thứ nhất) trên mỗi khu vực (thế hệ thứ hai) |
| Lệnh gọi API (GHI) | Các lệnh gọi để triển khai hoặc xoá các hàm thông qua API Firebase | 80 trên 100 giây | 60 trên 60 giây | Không 1 | trên mỗi dự án (thế hệ thứ nhất) trên mỗi khu vực (thế hệ thứ hai) |
| Lệnh gọi API (GỌI) | Các lệnh gọi đến API "gọi" | 16 trên 100 giây | Không áp dụng | Không 2 | trên mỗi dự án |
Giới hạn về mạng
Để biết thông tin về Firebase (thế hệ thứ 2) yêu cầu mạng và giới hạn băng thông, hãy xem bài viết Giới hạn về mạng.
Các giới hạn về mạng sau đây áp dụng cho Firebase (thế hệ thứ 1):
- Số kết nối gửi đi mỗi giây trên mỗi thực thể: 500 (không thể tăng)
- Số lần phân giải DNS gửi đi mỗi giây trên mỗi thực thể: 100 (không thể tăng)
- Số gói tối đa mỗi giây trên mỗi thực thể: 80.000
- Số bit tối đa mỗi giây trên mỗi thực thể: 100.000.000
Khả năng có thể mở rộng
Firebase được gọi bởi HTTP sẽ nhanh chóng tăng quy mô để xử lý lưu lượng truy cập đến, trong khi các hàm ở chế độ nền sẽ tăng quy mô dần dần hơn. Khả năng tăng quy mô của một hàm được quyết định bởi một số yếu tố, bao gồm:
- Thời gian để quá trình thực thi của một hàm hoàn tất (các hàm chạy trong thời gian ngắn thường có thể tăng quy mô để xử lý nhiều yêu cầu đồng thời hơn).
- Thời gian để một hàm khởi chạy khi khởi động nguội .
- Tỷ lệ lỗi của hàm.
Các yếu tố tạm thời, chẳng hạn như tải theo khu vực và công suất trung tâm dữ liệu.
Hạn mức bổ sung cho các hàm ở chế độ nền
| Hạn mức | Mô tả | Giới hạn | Có thể tăng | Phạm vi | Phiên bản sản phẩm |
|---|---|---|---|---|---|
| Số lời gọi đồng thời tối đa | Số lời gọi đồng thời tối đa của một hàm Ví dụ: nếu việc xử lý mỗi sự kiện mất 100 giây, thì tốc độ gọi sẽ bị giới hạn ở mức trung bình 30 mỗi giây |
3.000 | Có | trên mỗi hàm | Chỉ thế hệ thứ 1 |
| Tốc độ gọi tối đa | Tốc độ tối đa của các sự kiện được xử lý bởi một hàm Ví dụ: nếu việc xử lý một sự kiện mất 100 mili giây, thì tốc độ gọi sẽ bị giới hạn ở mức 1.000 mỗi giây ngay cả khi chỉ có trung bình 100 yêu cầu, được xử lý song song |
1.000 mỗi giây | Không | trên mỗi hàm | Chỉ thế hệ thứ 1 |
| Kích thước tối đa của dữ liệu sự kiện đồng thời | Tổng kích thước tối đa của các sự kiện đến đối với các lời gọi đồng thời của
một hàm Ví dụ: nếu các sự kiện có kích thước 1 MB và việc xử lý các sự kiện đó mất 10 giây, thì tốc độ trung bình sẽ là 1 sự kiện mỗi giây, vì sự kiện thứ 11 sẽ không được xử lý cho đến khi quá trình xử lý một trong 10 sự kiện đầu tiên hoàn tất |
10MB | Không | trên mỗi hàm | Thế hệ thứ 1 và thế hệ thứ 2 |
| Thông lượng tối đa của các sự kiện đến | Thông lượng tối đa của các sự kiện đến đối với một hàm Ví dụ: nếu các sự kiện có kích thước 1 MB, thì tốc độ gọi có thể tối đa là 10 mỗi giây, ngay cả khi các hàm hoàn tất trong vòng 100 mili giây |
10 MB mỗi giây | Không | trên mỗi hàm | Thế hệ thứ 1 và thế hệ thứ 2 |
Khi bạn đạt đến giới hạn hạn mức
Khi một hàm tiêu thụ tất cả tài nguyên được phân bổ, tài nguyên đó sẽ không hoạt động cho đến khi hạn mức được làm mới hoặc tăng lên. Điều này có thể có nghĩa là hàm của bạn và tất cả các hàm khác trong cùng một dự án sẽ không hoạt động cho đến lúc đó. Một hàm sẽ trả về mã lỗi HTTP 500 khi một trong các tài nguyên vượt quá hạn mức và hàm đó không thể thực thi.
Để tăng hạn mức vượt quá giá trị mặc định được liệt kê ở đây, hãy chuyển đến Trang hạn mức của Firebase, chọn các hạn mức bạn muốn sửa đổi, nhấp vào Chỉnh sửa hạn mức, cung cấp thông tin người dùng nếu được nhắc và nhập hạn mức mới cho từng hạn mức bạn đã chọn.
Giới hạn hạn mức cho việc triển khai CLI Firebase
Đối với mỗi hàm mà CLI Firebase triển khai, các loại giới hạn về tốc độ và thời gian sau đây sẽ bị ảnh hưởng:
- Lệnh gọi API (ĐỌC) – 1 lệnh gọi trên mỗi lần triển khai, bất kể số lượng hàm
- Giới hạn: 5.000 trên 100 giây
- Lệnh gọi API (GHI) – 1 lệnh gọi trên mỗi hàm
- Giới hạn: 80 trên 100 giây
Hãy xem cả tài liệu tham khảo về CLI Firebase.