【问题标题】:Scale out queue triggered azure function behavior in AppServicePlanAppServicePlan 中横向扩展队列触发的 Azure 函数行为
【发布时间】:2020-10-14 15:28:08
【问题描述】:

我在 C# 中开发了一个队列触发的 azure 函数。该函数在 AppService 计划上运行。我们想要实现自定义的自动横向扩展。我们计划在 CPU 百分比高于 60% 时将实例数增加 1

我的问题是:

  1. 将实例计数增加到 60% 是否是个好主意?
  2. 我研究过,发现对于blob触发的azure函数 有一种机制可以防止两个实例选择 相同的队列条目。它与 C# 队列的机制相同 触发了 Azure 函数?
  3. 在我的函数代码中,我编写了 Thread.Sleep(3000) 来休眠 在某些情况下穿线。横向扩展时会导致任何问题吗?
  4. 在我的 场景?

提前致谢。

【问题讨论】:

    标签: azure azure-functions scaling azure-app-service-plans queuetrigger


    【解决方案1】:

    将实例数增加到 60% 是否是个好主意?

    我们建议在扩展阈值和输入阈值之间选择足够的余量。例如,考虑以下更好的规则组合。

    • 当 CPU% >= 80 时增加 1 个实例
    • 当 CPU%

    我进行了研究,发现对于 blob 触发了 azure 函数 是一种防止两个实例选择同一个队列的机制 入口。它与 C# 队列触发 Azure 的机制相同 功能?

    是的,不用担心这个。

    在我的函数代码中,我编写了 Thread.Sleep(3000) 来休眠 在某些情况下穿线。横向扩展时会导致任何问题吗?

    没有。

    在我的 场景?

    这个应用服务计划下的所有webapps、functionapps都会消耗资源,还有一些其他的指标你可以考虑,比如内存使用情况。

    【讨论】:

    • 感谢您的回复。我有一个与您在第 2 点中的回答相关的问题。目前在没有横向扩展的情况下,有时我在队列触发的 azure 函数中收到“线程已中止”错误。此时,新线程或函数启动,旧线程被中止。但是,在旧线程中止之前的几分之一秒内,两个线程同时运行。在此期间,他们都选择了相同的队列条目。我通过记录函数中的每一步来知道这一点。如果队列触发 azure 函数具有避免它的机制,为什么会发生这种情况?
    猜你喜欢
    • 1970-01-01
    • 2012-09-05
    • 2017-07-20
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 2021-05-08
    • 2021-10-30
    • 1970-01-01
    相关资源
    最近更新 更多