Firebase gen 2 任务(云运行)并发似乎没有效果

问题描述 投票:0回答:1

我有一个第 1 代 Firebase 云功能,它可以迭代用户集合并将消息排队以通过第 2 代 Firebase 任务发送给所述用户。我将任务升级到第 2 代,希望克服发送消息时的冷启动延迟。

作为基本测试,我为 Firebase 云任务配置了并发性,并对由该函数启动的 20 条消息测试进行了排队。观察到的结果是每秒发送 1 条消息。我本来希望所有 20 个都能很快交付,但也许我错过了一些东西。此时,第 2 代函数的处理速度并不比第 1 代函数快。

目前我的目标是nodejs 14,计划很快升级到18。所有 20 条消息均以每秒 1 条的速度发送,并且在此消息测试中没有遇到错误。

这是有问题的代码:

const {onTaskDispatched} = require("firebase-functions/v2/tasks");
const {logger} = require("firebase-functions/v2");
const client = require('twilio')(id, auth);

exports.sendMessage = onTaskDispatched({
    //minInstances: 0,
    memory: '1GiB',
    concurrency: 50,
    minBackoffSeconds: 10,
    maxBackoffSeconds: 600,
    rateLimits: {
        maxConcurrentDispatches: 100,
    }
    }, async (req) => {
        const message = req.data.message;
            if (message) {
                try {
                    const res = await client.messages.create(message);
                    return res.sid;
                } catch (error) {
                    logger.warn(`Error sending text to: ${message.to} - ${error}`);
                    throw(error);
                }
            }
    });

firebase google-cloud-platform google-cloud-functions google-cloud-tasks
1个回答
0
投票

您需要将内存设置为至少 2gib:

请参阅此处的文档: https://cloud.google.com/functions/docs/configuring/concurrency

“设置大于 1 的并发值需要函数拥有 1 个或更多 vCPU - 请参阅默认内存和 vCPU 值的内存限制。”

© www.soinside.com 2019 - 2024. All rights reserved.