【问题标题】:How do I turn on "always-on" for an Azure Function?如何为 Azure 函数打开“始终开启”?
【发布时间】:2016-09-10 21:53:32
【问题描述】:

我有一个具有 3 个函数的函数应用程序,其中一个函数每 2 分钟触发一次。我观察到一段时间后,该功能停止触发,但当我进入门户时重新启动。

据我了解,原因是默认情况下,“始终开启”处于关闭状态。但是,当我进入应用程序设置/常规设置时,我无法激活灰显的“开启”状态。我可以取消选中“关闭”,这似乎不会粘住或激活“开启”。

我是否遗漏了一些明显的东西? Always-On 是我的问题的解决方案,还是我应该做的其他事情?

注意:函数是用 F# 编写的;我怀疑它是否重要,但我想我会提到它以防万一。

【问题讨论】:

    标签: f# azure-functions timer-trigger


    【解决方案1】:

    此答案适用于所有 Azure Function 场景,但由 http 请求触发的场景除外。

    有3个案例可以看:

    1. 您有一个在免费/共享应用服务计划中运行的函数应用:Always On 不可用,并且根本不支持这些场景。
    2. 您有一个在基本/标准/高级应用服务计划中运行的函数应用:Always On 可用并且可以打开。事实上,它默认开启,如果关闭它,您会在 Functions UI 中收到警告。
    3. 您有一个使用 消费计划 的函数应用程序:不需要 Always On,因为系统会在需要运行时唤醒您的函数。这是大多数用户推荐的方法。

    【讨论】:

    • 谢谢,这有帮助。作为后续,我的理解是,要让 Classic 上的计时器触发器起作用,我需要支付最便宜的 Basic 选项附带的固定成本。对吗?
    • 是的,在基本模式下是正确的。但是,如果您使用动态模式,则一切都是免费的,直到您达到高使用水平。详情请见pricing page
    • "应用服务计划:Always On 可用...事实上它是默认开启的";这不是我发现的,不是从 ARM 部署时发现的。您必须在模板中设置"alwaysOn": true。每docs.microsoft.com/en-us/azure/azure-functions/…
    • @Iain 确实,我指的是门户创建。使用 ARM,您必须明确设置它。
    • 有什么变化吗?因为我将功能应用程序从模板部署到高级计划,根本没有定义始终开启,并将其设置为 false。在门户中也找不到该选项。仅显示: Platform Managed pipeline version FTP state HTTP version This is v3
    【解决方案2】:

    Azure 函数由 Azure 应用服务共同管理,该服务始终限制为 Basic or above 模式(无免费或共享)

    在基本或标准模式下,您可以启用 Always On 以保持应用始终加载。

    【讨论】:

      【解决方案3】:

      如果您在免费/共享应用服务计划中,您可以做一个小技巧,它可以完美运行。使用像freshping.io这样的ping服务,每5秒/自定义间隔ping你的函数url,防止你的应用程序空闲。 Freshping.io 为您提供 5 个免费 ping 网址。

      注意:ping url 不计入 CPU 运行时间,除非您 ping 实际功能。所以它不会影响你的时间限制。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-13
        • 1970-01-01
        • 1970-01-01
        • 2011-12-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多