CloudFunctions with Pubsub : 发布延迟很长

Posted

技术标签:

【中文标题】CloudFunctions with Pubsub : 发布延迟很长【英文标题】:CloudFunctions with Pubsub : long delay to publish 【发布时间】:2021-08-02 19:20:59 【问题描述】:

我对 Pubsub 有疑问。我有一个功能和一个主题。当我发布该主题时,发布消息需要 2 分钟。这正常吗?

本地不存在此问题(使用 webstrom / Google Cloud SQK for windows)。 本地发布时间:240ms 谷歌云控制台发布时间:2分钟

在我的代码下面:

var topicName = "projects/XXXXXXXXXXXXXX/topics/ps_checkNiveauBacTampon";
const publisher = pubSubClient.topic(topicName, 
    batching: 
        maxMessages: 100,
        maxMilliseconds: 1,
    ,
);

exports.helloPubSub = function(event, context) => 
    var jsonPub = idBassin: 1;
    var payload = Buffer.from(JSON.stringify(jsonPub));

    // Publishes the message as a string, e.g. "Hello, world!" or JSON.stringify(someObject)
    //const dataBuffer = Buffer.from(JSON.stringify(jsonPub));


    try 
        console.log('In try, before publish');
        const messageId = await publisher.publish(payload);
        console.log('In try, after publish');
     catch (error) 
        console.error(`Received error while publishing: $error.message`);
        process.exitCode = 1;
    
    console.log('After try');


谷歌云日志下方:

【问题讨论】:

您在特定地区吗? 我已在此问题中添加了 Cloud Functions 标签,以防此处的问题与 Cloud Functions 相关。 2 分钟的发布时间是不寻常的,尤其是因为您已在批处理设置中将 maxMilliseconds 设置为 1。 @guillaumeblaquiere 我在留尼汪岛。云功能在 europe-west1 如果您的 Cloud Function 正在执行任何重要的计算,它可能会受到资源限制。你可以尝试为你的函数使用更高层的 CPU/内存,看看这是否能提高性能?如果没有帮助,请向 Google Cloud 支持提出案例,以便他们可以帮助您处理特定的函数和 Pub/Sub 主题。 【参考方案1】:

发布延迟可能源于 Pub/Sub 或 Cloud Functions 端。

    关于 Pub/Sub,低吞吐量可能会导致 冷缓存 问题。这是因为 Pub/Sub 是为低延迟和高吞吐量而设计的。另一种可能性是存在实施问题。您可以尝试减少maxMessages,看看是否能解决问题。

    关于 Cloud Functions,可能是 Lauren 已经说过的问题。如果函数遇到高 CPU 或 RAM 使用率,可能会导致在 Pub/Sub 上发布主题出现意外延迟。正如您所说,在本地运行时一切正常,也许您使用的是更高的硬件规格。如果是这种情况,您可以尝试增加 CPU 和 RAM。

【讨论】:

以上是关于CloudFunctions with Pubsub : 发布延迟很长的主要内容,如果未能解决你的问题,请参考以下文章

从 Watson Assistant 调用 OpenWeather API:“直接 CloudFunctions 调用不成功”

我可以将 Google CloudFunctions 用于可靠的应用程序目的吗?

Cloud Tasks + Cloud Functions - 重复执行

如何让 Google Cloud Functions 保持温暖?

连接到 Cloud SQL 时,Cloud Functions “连接被拒绝”

具有 Cloud pubsub 的 Cloud Functions 触发消息排队