Trang này trình bày chi tiết các giới hạn 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 giới hạn này áp dụng cho những dự án Firebase triển khai các hàm vào môi trường thời gian chạy Node.js 10.
Gói Blaze cung cấp miễn phí một lượng lớn lệnh 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ải chịu các khoản phí quy mô nhỏ cho dung lượng lưu trữ được dùng cho vùng chứa của hàm. Hãy xem phần Câu hỏi thường gặp của Firebase để 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
Những yếu tố 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ể sử dụng.
Giới hạn thời gian
Những yếu tố này ảnh hưởng đến thời gian chạy của các mục.
Giới hạn số lần yêu cầu
Những hạn mức này ảnh hưởng đến tốc độ mà bạn có thể gọi API Firebase để quản lý các hàm của mình.
Giới hạn về mạng
Những thay đổi này ảnh hưởng đến giới hạn kết nối đi và giới hạn phiên bản.
Các loại hạn mức được mô tả chi tiết hơn ở bên dưới. Chúng tôi sẽ lưu ý những điểm khác biệt giữa hạn mức của Firebase (thế hệ thứ 1) và Firebase (thế hệ thứ 2) (nếu có).
Giới hạn về tài nguyên
Giới hạn 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ể sử dụng. Phạm vi theo khu vực là theo từng dự án và mỗi dự án duy trì hạn mức riêng.
Hạn ngạch dung lượng | Mô tả | Giới hạn (thế hệ thứ 1) | Limit (thế hệ thứ 2) | Có thể tăng | Phạm vi |
---|---|---|---|---|---|
Số lượng hàm | Tổng số hàm có thể triển khai cho mỗi khu vực | 1.000 | 1.000 trừ đi số lượng dịch vụ Cloud Run đã triển khai | Không | theo 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) cho các nguồn. 500 MB (chưa nén) cho 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 | cho 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âu trả lời truyền trực tuyến. 32 MB cho câu trả lời không theo thời gian thực. |
Không | cho mỗi lời gọi |
Kích thước sự kiện tối đa cho 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 nền | 10MB | 512 KB đối với các sự kiện Eventarc. 10 MB đối với 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 phiên bản 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 | Dung lượng bộ nhớ (tính bằng byte) mà một dự án có thể sử dụng. Chỉ số này được đo bằng tổng bộ nhớ mà người dùng yêu cầu trên các phiên bản hàm trong khoảng thời gian 1 phút. | Tuỳ thuộc vào khu vực bạn chọn. Giới hạn này có thể cao hơn ở những khu vực có công suất cao hoặc thấp hơn ở những khu vực mới mở. | Không áp dụng | Có | cho mỗi dự án và khu vực |
CPU tối đa của dự án | Lượng CPU (tính bằng mili vCPU) mà một dự án có thể sử dụng. Chỉ số này được đo bằng tổng số CPU mà người dùng yêu cầu trên các phiên bản hàm trong khoảng thời gian 1 phút. | Tuỳ thuộc vào khu vực bạn chọn. Giới hạn này có thể cao hơn ở những khu vực có công suất cao hoặc thấp hơn ở những khu vực mới mở. | Không áp dụng | Có | cho mỗi dự án và khu vực |
Giới hạn thời gian
Hạn ngạch dung lượng | Mô tả | Giới hạn (thế hệ thứ 1) | Limit (thế hệ thứ 2) | Có thể tăng | Phạm vi |
---|---|---|---|---|---|
Thời lượng tối đa của hàm | Khoảng thời gian 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 | 60 phút cho các hàm HTTP. 9 phút cho các hàm dựa trên sự kiện. |
Không | cho mỗi lời gọi |
Giới hạn số lần yêu cầu
Hạn ngạch dung lượng | Mô tả | Giới hạn (thế hệ thứ 1) | Limit (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 mỗi 100 giây | 1.200 mỗi 60 giây | Chỉ dành cho thế hệ thứ 1 | cho mỗi dự án (thế hệ thứ 1) cho mỗi khu vực (thế hệ thứ 2) |
Lệnh gọi API (WRITE) | Các lệnh gọi để triển khai hoặc xoá các hàm thông qua API Firebase | 80 thông số trên 100 giây | 60 lần trong 60 giây | Không 1 | cho mỗi dự án (thế hệ thứ 1) cho mỗi khu vực (thế hệ thứ 2) |
Lệnh gọi API (CALL) | Lệnh gọi đến API "call" | 16 lần trong 100 giây | Không áp dụng | Không 2 | mỗi dự án |
Giới hạn về mạng
Để biết thông tin về yêu cầu kết nối mạng và giới hạn băng thông của Firebase (thế hệ thứ 2), hãy xem bài viết Giới hạn kết nối mạng.
Các giới hạn về mạng sau đây áp dụng cho Firebase (thế hệ thứ nhất):
- Số lượng kết nối đi mỗi giây trên mỗi phiên bản: 500 (không thể tăng)
- Số lượt phân giải DNS đi mỗi giây trên mỗi phiên bản: 100 (không thể tăng)
- Số gói tối đa mỗi giây cho mỗi phiên bản: 80.000
- Số bit tối đa mỗi giây cho mỗi phiên bản: 100.000.000
Khả năng mở rộng
Firebase do HTTP gọi sẽ nhanh chóng tăng quy mô để xử lý lưu lượng truy cập đến, trong khi các hàm nền sẽ tăng quy mô dần dần. Khả năng mở rộng quy mô của một hàm được quyết định bởi một số yếu tố, bao gồm:
- Khoảng thời gian cần thiết để hoàn tất quá trình thực thi một hàm (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 cần thiết để 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à dung lượng trung tâm dữ liệu.
Hạn mức bổ sung cho các hàm ở chế độ nền
Hạn ngạch dung lượng | Mô tả | Giới hạn | Có thể tăng | Phạm vi | Phiên bản sản phẩm |
---|---|---|---|---|---|
Số lệnh gọi đồng thời tối đa | Số lần 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 lần 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 duy nhất 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 cho các lệnh gọi đồng thời của một hàm duy nhất Ví dụ: nếu các sự kiện có kích thước 1 MB và mất 10 giây để xử lý, 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 kết thúc |
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 sắp tới | Thông lượng tối đa của các sự kiện đến một hàm duy nhất 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/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 ngạch
Khi một hàm sử dụng hết một tài nguyên được phân bổ, tài nguyên đó sẽ không dùng được 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 thời điểm đó. Một hàm 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á hạn mức mặc định được liệt kê ở đây, hãy chuyển đến Firebasetrang Hạn mức, chọn hạn mức mà 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 giới hạn hạn mức mới cho từng hạn mức mà bạn đã chọn.
Hạn mức triển khai của Giao diện dòng lệnh (CLI) của Firebase
Đối với mỗi hàm mà Firebase CLI triển khai, các loại giới hạn về tốc độ và thời gian này sẽ bị ảnh hưởng:
- Lệnh gọi API (ĐỌC) – 1 lệnh gọi cho mỗi lượt triển khai, bất kể có bao nhiêu hàm
- Giới hạn: 5.000 yêu cầu trong 100 giây
- Lệnh gọi API (GHI) – 1 lệnh gọi cho mỗi hàm
- Giới hạn: 80 yêu cầu trong 100 giây
Ngoài ra, hãy xem tài liệu tham khảo về Giao diện dòng lệnh (CLI) của Firebase.