Bạn có thể triển khai, xoá và sửa đổi các hàm bằng các lệnh CLI Firebase hoặc bằng cách đặt tuỳ chọn thời gian chạy trong mã nguồn hàm.
Triển khai hàm
Để triển khai các hàm, hãy chạy lệnh CLI Firebase này:
firebase deploy --only functions
Theo mặc định, CLI Firebase triển khai tất cả các hàm bên trong
nguồn cùng một lúc. Nếu dự án của bạn chứa nhiều hơn 5 hàm,
bạn nên sử dụng cờ --only
với các tên hàm cụ thể
để chỉ triển khai các chức năng
mà bạn đã chỉnh sửa. Triển khai các chức năng cụ thể
theo cách này, đẩy nhanh quá trình triển khai và giúp bạn tránh gặp phải
hạn mức triển khai. Ví dụ:
firebase deploy --only functions:addMessage,functions:makeUppercase
Khi triển khai một số lượng lớn các chức năng, bạn có thể vượt quá hạn mức chuẩn và nhận được thông báo lỗi HTTP 429 hoặc 500. Để giải quyết để triển khai các hàm theo nhóm tối đa 10 người.
Xem tài liệu tham khảo về CLI Firebase để biết danh sách đầy đủ các công cụ hiện có các lệnh.
Theo mặc định, CLI Firebase sẽ tìm trong thư mục functions/
để tìm
mã nguồn. Nếu muốn, bạn có thể sắp xếp các hàm
trong cơ sở mã hoặc nhiều tập hợp tệp.
Xoá hàm
Bạn có thể xoá các hàm đã triển khai trước đó theo những cách sau:
- một cách rõ ràng trong CLI Firebase với
functions:delete
- một cách rõ ràng trong bảng điều khiển Google Cloud.
- ngầm ẩn bằng cách xoá hàm khỏi nguồn trước khi triển khai.
Tất cả thao tác xoá sẽ nhắc bạn xác nhận trước khi xoá hàm khỏi phiên bản phát hành công khai.
Việc xoá hàm rõ ràng trong CLI Firebase hỗ trợ nhiều đối số cũng như các hàm nhóm và cho phép bạn chỉ định một hàm chạy trong một khu vực cụ thể. Ngoài ra, bạn có thể ghi đè lời nhắc xác nhận.
# Delete all functions that match the specified name in all regions. firebase functions:delete myFunction
# Delete a specified function running in a specific region. firebase functions:delete myFunction --region us-east-1
# Delete more than one function firebase functions:delete myFunction myOtherFunction
# Delete a specified functions group. firebase functions:delete groupA
# Bypass the confirmation prompt. firebase functions:delete myFunction --force
Khi xoá hàm ngầm ẩn, firebase deploy
sẽ phân tích cú pháp nguồn của bạn và
xoá khỏi phiên bản chính thức mọi hàm đã bị xoá khỏi tệp.
Sửa đổi tên, khu vực hoặc điều kiện kích hoạt của hàm
Nếu bạn đổi tên hoặc thay đổi vùng hoặc điều kiện kích hoạt cho các hàm xử lý lưu lượng truy cập thực tế, hãy làm theo các bước trong phần này để tránh bị mất sự kiện trong quá trình sửa đổi. Trước khi làm theo các bước này, đầu tiên hãy đảm bảo rằng hàm không thay đổi, vì cả phiên bản mới và phiên bản cũ của hàm đều sẽ chạy ở tại cùng một thời điểm trong quá trình thay đổi.
Đổi tên hàm
Để đổi tên một hàm, hãy tạo một phiên bản mới được đổi tên của hàm đó trong nguồn của bạn rồi chạy hai lệnh triển khai riêng biệt. Lệnh đầu tiên triển khai hàm mới được đặt tên và lệnh thứ hai xoá các lệnh đã triển khai trước đó . Ví dụ: nếu bạn có một webhook được kích hoạt qua HTTP, bạn muốn đổi tên, sửa đổi mã như sau:
Node.js
// before
const {onRequest} = require('firebase-functions/v2/https');
exports.webhook = onRequest((req, res) => {
res.send("Hello");
});
// after
const {onRequest} = require('firebase-functions/v2/https');
exports.webhookNew = onRequest((req, res) => {
res.send("Hello");
});
Python
# before
from firebase_functions import https_fn
@https_fn.on_request()
def webhook(req: https_fn.Request) -> https_fn.Response:
return https_fn.Response("Hello world!")
# after
from firebase_functions import https_fn
@https_fn.on_request()
def webhook_new(req: https_fn.Request) -> https_fn.Response:
return https_fn.Response("Hello world!")
Sau đó, hãy chạy các lệnh sau để triển khai hàm mới:
# Deploy new function firebase deploy --only functions:webhookNew # Wait until deployment is done; now both functions are running # Delete webhook firebase functions:delete webhook
Thay đổi khu vực hoặc khu vực của hàm
Nếu bạn thay đổi khu vực đã chỉ định cho một xử lý lưu lượng truy cập thực tế, bạn có thể ngăn chặn tình trạng mất sự kiện bằng cách thực hiện các bước sau theo thứ tự:
- Đổi tên hàm rồi thay đổi vùng hoặc các vùng của hàm theo ý muốn.
- Triển khai hàm đã đổi tên, kết quả là sẽ tạm thời chạy cùng một mã ở cả hai nhóm khu vực.
- Xoá hàm trước đó.
Ví dụ: nếu bạn có một hàm được kích hoạt bằng Cloud Firestore
hiện đang ở
vùng chức năng mặc định là us-central1
và bạn muốn di chuyển vùng này sang
asia-northeast1
, trước tiên bạn cần sửa đổi mã nguồn để đổi tên
và sửa đổi khu vực.
Node.js
// before
exports.firestoreTrigger = onDocumentCreated(
"my-collection/{docId}",
(event) => {},
);
// after
exports.firestoreTriggerAsia = onDocumentCreated(
{
document: "my-collection/{docId}",
region: "asia-northeast1",
},
(event) => {},
);
Mã được cập nhật phải chỉ định bộ lọc sự kiện chính xác (trong trường hợp này
document
) cho khu vực này. Xem
Vị trí Cloud Functions để biết thêm thông tin.
Python
# Before
@firestore_fn.on_document_created("my-collection/{docId}")
def firestore_trigger(event):
pass
# After
@firestore_fn.on_document_created("my-collection/{docId}",
region="asia-northeast1")
def firestore_trigger_asia(event):
pass
Sau đó, triển khai bằng cách chạy:
firebase deploy --only functions:firestoreTriggerAsia
Hiện có 2 hàm giống hệt nhau đang chạy: firestoreTrigger
đang chạy trong
us-central1
và firestoreTriggerAsia
đang chạy ở asia-northeast1
.
Sau đó, xoá firestoreTrigger
:
firebase functions:delete firestoreTrigger
Hiện chỉ có một hàm là firestoreTriggerAsia
, đang chạy trong
asia-northeast1
Thay đổi loại điều kiện kích hoạt của hàm
Khi phát triển việc triển khai Cloud Functions for Firebase theo thời gian, bạn có thể cần thay đổi loại trình kích hoạt của một hàm vì nhiều lý do. Ví dụ: bạn có thể muốn thay đổi từ một loại Firebase Realtime Database hoặc Sự kiện Cloud Firestore thành một loại khác.
Không thể thay đổi loại sự kiện của hàm chỉ bằng cách thay đổi
mã nguồn và chạy firebase deploy
. Để tránh lỗi,
thay đổi loại điều kiện kích hoạt của hàm theo quy trình sau:
- Sửa đổi mã nguồn để bao gồm một hàm mới có loại điều kiện kích hoạt mong muốn.
- Triển khai hàm, kết quả là sẽ tạm thời chạy cả hàm cũ và hàm mới.
- Xoá rõ ràng hàm cũ khỏi phiên bản chính thức bằng cách sử dụng CLI Firebase.
Ví dụ: nếu bạn có một hàm được kích hoạt khi một đối tượng đã xóa, nhưng sau đó bạn đã bật tạo phiên bản đối tượng và muốn đăng ký sự kiện lưu trữ, trước tiên hãy đổi tên và chỉnh sửa hàm đó để có loại trình kích hoạt mới.
Node.js
// before
const {onObjectDeleted} = require("firebase-functions/v2/storage");
exports.objectDeleted = onObjectDeleted((event) => {
// ...
});
// after
const {onObjectArchived} = require("firebase-functions/v2/storage");
exports.objectArchived = onObjectArchived((event) => {
// ...
});
Python
# before
from firebase_functions import storage_fn
@storage_fn.on_object_deleted()
def object_deleted(event):
# ...
# after
from firebase_functions import storage_fn
@storage_fn.on_object_archived()
def object_archived(event):
# ...
Sau đó, trước tiên, hãy chạy các lệnh sau để tạo hàm mới, trước khi xoá hàm cũ:
# Create new function objectArchived firebase deploy --only functions:objectArchived # Wait until deployment is done; now both objectDeleted and objectArchived are running # Delete objectDeleted firebase functions:delete objectDeleted
Đặt tuỳ chọn thời gian chạy
Cloud Functions for Firebase cho phép bạn chọn các tuỳ chọn thời gian chạy như Node.js phiên bản thời gian chạy và thời gian chờ theo mỗi chức năng, phân bổ bộ nhớ và tối thiểu/tối đa thực thể hàm.
Tốt nhất là bạn nên đặt các tuỳ chọn này (ngoại trừ phiên bản Node.js) trên
đối tượng cấu hình bên trong mã hàm. Chiến dịch này
RuntimeOptions
là nguồn đáng tin cậy cho các tuỳ chọn thời gian chạy của hàm và sẽ
các tuỳ chọn ghi đè được đặt qua bất kỳ phương thức nào khác (chẳng hạn như qua bảng điều khiển Google Cloud
hoặc gcloud CLI).
Nếu quy trình phát triển của bạn liên quan đến việc đặt tuỳ chọn thời gian chạy theo cách thủ công qua
Google Cloud Console hoặc gcloud CLI và bạn không muốn các giá trị này
bị ghi đè trên mỗi lần triển khai, hãy đặt tuỳ chọn preserveExternalChanges
thành true
.
Khi bạn đặt tuỳ chọn này thành true
, Firebase sẽ hợp nhất các tuỳ chọn thời gian chạy được đặt trong
cùng với các chế độ cài đặt của phiên bản hàm đang được triển khai bằng
mức độ ưu tiên sau:
- Tuỳ chọn được đặt trong mã hàm: ghi đè các thay đổi bên ngoài.
- Tuỳ chọn được đặt thành
RESET_VALUE
trong mã hàm: ghi đè các thay đổi bên ngoài bằng giá trị mặc định. - Tuỳ chọn không được đặt trong mã hàm nhưng được đặt trong hàm hiện đã triển khai: sử dụng tuỳ chọn được chỉ định trong hàm đã triển khai.
Không nên sử dụng tuỳ chọn preserveExternalChanges: true
trong hầu hết các trường hợp vì
mã sẽ không còn là nguồn đáng tin cậy cho các tuỳ chọn thời gian chạy cho
. Nếu bạn sử dụng, hãy kiểm tra bảng điều khiển Google Cloud hoặc sử dụng gcloud
CLI để xem cấu hình đầy đủ của một hàm.
Đặt phiên bản Node.js
SDK Firebase dành cho Cloud Functions cho phép lựa chọn thời gian chạy Node.js. Bạn có thể chọn chạy tất cả hàm trong một dự án chỉ trên thời gian chạy môi trường tương ứng với một trong các phiên bản Node.js được hỗ trợ sau:
- Node.js 22 (bản xem trước)
- Node.js 20
- Node.js 18
Node.js phiên bản 14 và 16 không được dùng nữa và sẽ ngừng hoạt động vào đầu năm 2025. Triển khai những phiên bản không được dùng nữa sẽ bị vô hiệu hoá.
Cách đặt phiên bản Node.js:
Bạn có thể đặt phiên bản trong trường engines
trong package.json
tệp được tạo trong thư mục functions/
của bạn trong quá trình khởi tạo.
Ví dụ: để chỉ sử dụng
phiên bản 18, hãy chỉnh sửa dòng này trong package.json
:
"engines": {"node": "20"}
Nếu bạn đang sử dụng trình quản lý gói Yarn hoặc có các yêu cầu cụ thể khác đối với
trường engines
, bạn có thể đặt thời gian chạy cho SDK Firebase cho Cloud Functions trong
Thay vào đó firebase.json
:
{
"functions": {
"runtime": "nodejs18" // or nodejs20
}
}
CLI sử dụng giá trị được đặt trong firebase.json
ưu tiên cho bất kỳ giá trị nào hoặc
mà bạn đã đặt riêng trong package.json
.
Nâng cấp thời gian chạy Node.js
Cách nâng cấp thời gian chạy Node.js:
- Hãy đảm bảo dự án của bạn đang ở trên Gói giá linh hoạt.
- Hãy đảm bảo rằng bạn đang sử dụng Firebase CLI phiên bản 11.18.0 trở lên.
- Thay đổi giá trị
engines
trong tệppackage.json
đã được tạo trong thư mụcfunctions/
của bạn trong quá trình khởi tạo. Ví dụ: nếu bạn đang nâng cấp từ phiên bản 18 lên phiên bản 20, mục nhập sẽ có dạng như sau:"engines": {"node": "20"}
- Nếu muốn, hãy kiểm tra các thay đổi của bạn bằng cách sử dụng Firebase Local Emulator Suite.
- Triển khai lại tất cả các chức năng.
Đặt phiên bản Python
SDK Firebase dành cho Cloud Functions phiên bản 12.0.0 trở lên cho phép lựa chọn Python
thời gian chạy. Thiết lập phiên bản thời gian chạy trong firebase.json
như dưới đây:
{
"functions": {
"runtime": "python310" // or python311
}
}
Kiểm soát hành vi điều chỉnh tỷ lệ
Theo mặc định, Cloud Functions for Firebase sẽ điều chỉnh số lượng thực thể đang chạy dựa trên số lượng yêu cầu đến, có thể giảm xuống mức 0 khi lưu lượng truy cập giảm. Tuy nhiên, nếu ứng dụng của bạn cần giảm độ trễ và muốn giới hạn số lần khởi động nguội, bạn có thể thay đổi tỷ lệ này bằng cách chỉ định số lượng thực thể vùng chứa tối thiểu được giữ ấm và sẵn sàng đáp ứng các yêu cầu.
Tương tự, bạn có thể đặt một số tối đa để giới hạn tỷ lệ của các thực thể trong các yêu cầu gửi đến. Hãy sử dụng chế độ cài đặt này để kiểm soát chi phí của bạn hoặc để giới hạn số lượng kết nối với dịch vụ sao lưu, chẳng hạn như với cơ sở dữ liệu.
Sử dụng các chế độ cài đặt này cùng với chế độ cài đặt đồng thời cho mỗi phiên bản (mới ở thế hệ thứ 2), bạn có thể kiểm soát và điều chỉnh hành vi điều chỉnh tỷ lệ cho các hàm của mình. Chiến lược phát hành đĩa đơn bản chất của ứng dụng và chức năng sẽ xác định chế độ cài đặt nào hiệu quả nhất tiết kiệm chi phí và sẽ mang lại hiệu suất cao nhất.
Đối với một số ứng dụng có lưu lượng truy cập thấp, tuỳ chọn CPU thấp hơn mà không có mô hình đa đồng thời tối ưu. Đối với những trường hợp khác mà việc khởi động nguội là một vấn đề nghiêm trọng, việc đặt chế độ cài đặt ở mức cao tính đồng thời và thực thể tối thiểu có nghĩa là một tập hợp các thực thể luôn được lưu giữ để xử lý các mốc tăng đột biến về lưu lượng truy cập.
Đối với các ứng dụng quy mô nhỏ nhận được rất ít lưu lượng truy cập, hãy đặt mức tối đa thực thể có tính đồng thời cao đồng nghĩa với việc ứng dụng có thể xử lý các đợt tăng lưu lượng truy cập mà không làm phát sinh chi phí quá mức. Tuy nhiên, hãy lưu ý rằng khi tối đa thực thể được đặt quá thấp, yêu cầu có thể bị loại bỏ khi đạt đến mức trần.
Cho phép các yêu cầu đồng thời
Trong Cloud Functions for Firebase (thế hệ thứ 1), mỗi thực thể có thể xử lý một yêu cầu tại một thời điểm
hành vi điều chỉnh tỷ lệ chỉ được thiết lập với chế độ cài đặt số thực thể tối thiểu và tối đa.
Ngoài việc kiểm soát số lượng thực thể, trong Cloud Functions for Firebase (thế hệ thứ 2), bạn
có thể kiểm soát số lượng yêu cầu mà mỗi thực thể có thể phân phối cùng lúc bằng
tuỳ chọn concurrency
. Giá trị mặc định cho mô hình đồng thời là 80, nhưng bạn có thể
đặt nó thành bất kỳ số nguyên nào trong khoảng từ 1 đến 1000.
Các hàm có chế độ cài đặt đồng thời cao hơn có thể hấp thụ lưu lượng truy cập tăng đột biến mà không khởi động nguội vì mỗi trường hợp có thể có một mức trần. Nếu một thực thể là được định cấu hình để xử lý tối đa 50 yêu cầu đồng thời nhưng hiện chỉ đang xử lý 25, thì tính năng này có thể xử lý khi có thêm 25 yêu cầu tăng đột biến mà không cần thực thể thành khởi động nguội. Ngược lại, với chế độ cài đặt đồng thời chỉ là 1, mức tăng đột biến về số yêu cầu có thể dẫn đến 25 lần khởi động nguội.
Tình huống đơn giản này minh hoạ mức tăng hiệu quả tiềm năng của tính đồng thời. Trong thực tế, việc nhân rộng quy mô hành vi để tối ưu hoá hiệu quả và giảm quy trình khởi động nguội bằng lệnh đồng thời phức tạp hơn. Đồng thời bằng Cloud Functions for Firebase thế hệ thứ 2 do Cloud Run cung cấp và tuân theo Quy tắc của Cloud Run về Tự động cấp tài nguyên bổ sung cho thực thể vùng chứa.
Khi thử nghiệm chế độ cài đặt đồng thời cao hơn trong Cloud Functions for Firebase (thế hệ thứ 2), hãy lưu ý những điều sau:
- Chế độ cài đặt đồng thời cao hơn có thể yêu cầu CPU và RAM cao hơn để tối ưu hiệu suất cho đến khi đạt đến giới hạn thực tế. Một hàm làm nặng xử lý hình ảnh hoặc video có thể thiếu tài nguyên để xử lý 1000 yêu cầu đồng thời, ngay cả khi cài đặt CPU và RAM được tối đa hoá.
- Vì Cloud Functions for Firebase (thế hệ thứ 2) sử dụng công nghệ của Cloud Run nên bạn có thể hãy tham khảo thêm hướng dẫn Google Cloud dành cho tối ưu hoá tính đồng thời.
- Đừng quên kiểm thử kỹ lưỡng mô hình đa đồng thời trong một môi trường kiểm thử trước khi chuyển sang mô hình đa đồng thời trong môi trường thực tế.
Duy trì số lượng thực thể tối thiểu
Bạn có thể đặt số lượng thực thể tối thiểu cho một hàm trong mã nguồn. Ví dụ: hàm này đặt tối thiểu 5 thực thể để giữ ấm:
Node.js
const { onCall } = require("firebase-functions/v2/https");
exports.getAutocompleteResponse = onCall(
{
// Keep 5 instances warm for this latency-critical function
minInstances: 5,
},
(event) => {
// Autocomplete user’s search term
}
);
Python
@https_fn.on_call(min_instances=5)
def get_autocomplete_response(event: https_fn.CallableRequest) -> https_fn.Response:
Dưới đây là một số điều cần xem xét khi đặt giá trị số thực thể tối thiểu:
- Nếu Cloud Functions for Firebase điều chỉnh tỷ lệ ứng dụng trên mức cài đặt của bạn, bạn sẽ gặp phải tình trạng khởi động nguội cho từng trường hợp vượt quá ngưỡng đó.
- Khởi động nguội có ảnh hưởng nghiêm trọng nhất đến các ứng dụng có lưu lượng truy cập tăng đột biến. Nếu có lưu lượng truy cập tăng đột biến và bạn đặt giá trị đủ cao để số lượt khởi động nguội sẽ giảm xuống mỗi khi lưu lượng truy cập tăng, bạn sẽ thấy đáng kể độ trễ thấp hơn. Đối với những ứng dụng có lưu lượng truy cập liên tục, khả năng khởi động nguội sẽ không để ảnh hưởng nghiêm trọng đến hiệu suất.
Việc đặt số thực thể tối thiểu là hợp lý đối với môi trường phát hành công khai, nhưng nên tránh trong môi trường kiểm thử. Để điều chỉnh tỷ lệ về 0 trong dự án thử nghiệm nhưng vẫn giảm số lượt khởi động nguội trong dự án sản xuất, có thể đặt giá trị thực thể tối thiểu trong cấu hình có tham số của bạn:
Node.js
const functions = require('firebase-functions'); const { defineInt, defineString } = require('firebase-functions/params'); // Define some parameters const minInstancesConfig = defineInt('HELLO_WORLD_MININSTANCES'); const welcomeMessage = defineString('WELCOME_MESSAGE'); // To use configured parameters inside the config for a function, provide them // directly. To use them at runtime, call .value() on them. export const helloWorld = functions.runWith({ minInstances: minInstancesConfig}).https.onRequest( (req, res) => { res.send(`${welcomeMessage.value()}! I am a function.`); } );
Python
MIN_INSTANCES = params.IntParam("HELLO_WORLD_MININSTANCES") WELCOME_MESSAGE = params.StringParam("WELCOME_MESSAGE") @https_fn.on_request(min_instances=MIN_INSTANCES.value()) def get_autocomplete_response(event: https_fn.Request) -> https_fn.Response: return https_fn.Response(f"{WELCOME_MESSAGE.value()} I'm a function.")
Giới hạn số lượng thực thể tối đa của một hàm
Bạn có thể đặt giá trị cho số thực thể tối đa trong mã nguồn của hàm. Ví dụ: hàm này đặt giới hạn 100 thực thể để không làm quá tải cơ sở dữ liệu cũ giả định:
Node.js
const { onMessagePublished } = require("firebase-functions/v2/pubsub");
exports.mirrorevents = onMessagePublished(
{ topic: "topic-name", maxInstances: 100 },
(event) => {
// Connect to legacy database
}
);
Python
@pubsub_fn.on_message_published(topic="topic-name", max_instances=100)
def mirrorevents(event: pubsub_fn.CloudEvent):
# Connect to legacy database
Nếu một hàm HTTP được mở rộng đến giới hạn số thực thể tối đa, thì các yêu cầu mới sẽ
đã xếp hàng chờ trong 30 giây, rồi bị từ chối bằng mã phản hồi là
429 Too Many Requests
nếu không có phiên bản nào vào thời điểm đó.
Để tìm hiểu thêm về các phương pháp hay nhất khi sử dụng chế độ cài đặt số lượng thực thể tối đa, hãy xem ra những các phương pháp hay nhất để đặt số thực thể tối đa.
Đặt thời gian chờ và phân bổ bộ nhớ
Trong một số trường hợp, các hàm của bạn có thể có yêu cầu đặc biệt về thời gian chờ dài hoặc phân bổ bộ nhớ lớn. Bạn có thể đặt các giá trị này trong Bảng điều khiển Google Cloud hoặc trong mã nguồn hàm (chỉ Firebase).
Để thiết lập quy trình phân bổ bộ nhớ và thời gian chờ trong mã nguồn của hàm, hãy sử dụng các tuỳ chọn chung cho bộ nhớ và thời gian chờ (tính theo giây) để tuỳ chỉnh máy ảo chạy các chức năng của bạn. Ví dụ: hàm Cloud Storage này sử dụng 1GiB bộ nhớ và thời gian xuất hiện sau 300 giây:
Node.js
exports.convertLargeFile = onObjectFinalized({
timeoutSeconds: 300,
memory: "1GiB",
}, (event) => {
// Do some complicated things that take a lot of memory and time
});
Python
@storage_fn.on_object_finalized(timeout_sec=300, memory=options.MemoryOption.GB_1)
def convert_large_file(event: storage_fn.CloudEvent):
# Do some complicated things that take a lot of memory and time.
Giá trị tối đa cho số giây thời gian chờ là 540
hoặc 9 phút.
Cách thiết lập quy trình phân bổ bộ nhớ và thời gian chờ trong bảng điều khiển Google Cloud:
- Trong bảng điều khiển Google Cloud, hãy chọn Cloud Functions for Firebase trong trình đơn bên trái.
- Chọn một hàm bằng cách nhấp vào tên của hàm đó trong danh sách hàm.
- Nhấp vào biểu tượng Chỉnh sửa trong trình đơn trên cùng.
- Chọn một quy trình phân bổ bộ nhớ trong trình đơn thả xuống có gắn nhãn Đã phân bổ bộ nhớ.
- Nhấp vào Khác để hiển thị các tuỳ chọn nâng cao rồi nhập một số giây trong hộp văn bản Thời gian chờ.
- Nhấp vào Lưu để cập nhật hàm.
Ghi đè giá trị mặc định của CPU
Phân bổ tối đa 2 GB bộ nhớ, mỗi hàm trong Cloud Functions for Firebase (thế hệ thứ 2) mặc định là một CPU, sau đó tăng lên 2 CPU cho 4 và 8GB. Lưu ý rằng điều này khác biệt đáng kể so với hành vi mặc định của thế hệ 1 theo cách có thể sẽ dẫn đến chi phí cao hơn một chút cho các chức năng có bộ nhớ thấp như được thể hiện trong bảng sau:
RAM đã phân bổ | CPU mặc định của phiên bản 1 (phân số) | CPU mặc định của phiên bản 2 | Mức tăng giá mỗi mili giây |
---|---|---|---|
128MB | 1/12 | 1 | 10,5x |
256MB | 1/6 | 1 | 5,3x |
512MB | 1/3 | 1 | Gấp 2,7 lần |
1 GB | 12/7 | 1 | 1,6x |
2GB | 1 | 1 | 1x |
4GB | 2 | 2 | 1x |
8GB | 2 | 2 | 1x |
16 GB | không có | 4 | không có |
Nếu bạn muốn hành vi của thế hệ 1 cho các hàm thế hệ 2 của mình hơn, hãy đặt giá trị mặc định của thế hệ 1 dưới dạng tuỳ chọn toàn cầu:
Node.js
// Turn off Firebase defaults
setGlobalOptions({ cpu: 'gcf_gen1' });
Python
# Use 1st gen behavior
set_global_options(cpu="gcf_gen1")
Đối với các hàm dùng nhiều CPU, thế hệ thứ 2 giúp bạn linh hoạt định cấu hình các cấu hình bổ sung CPU. Bạn có thể tăng CPU theo từng chức năng như sau:
Node.js
// Boost CPU in a function:
export const analyzeImage = onObjectFinalized({ cpu: 2 }, (event) => {
// computer vision goes here
});
Python
# Boost CPU in a function:
@storage_fn.on_object_finalized(cpu=2)
def analyze_image(event: storage_fn.CloudEvent):
# computer vision goes here