无法阻止azure函数Python冷启动

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

我不知道如何完全停止专用或高级计划上的天蓝色功能冷启动。我有一个 ML 函数返回输入数据的预测。我尝试过的:

  • 使用 Python V2 模型,因此所有代码都位于同一个 .py 文件中(例如,所有依赖项一起加载)
  • warmupTrigger(也调用预测函数,以便加载/预热模型)
  • 交换预热触发器(用于防止交换期间冷启动)
  • 健康检查,使用
    WEBSITE_HEALTHCHECK_MAXPINGFAILURES
    WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT
  • 参数的不同变体
  • 调整
    FUNCTIONS_WORKER_PROCESS_COUNT
    PYTHON_THREADPOOL_THREAD_COUNT
  • 使用异步进行预测
  • 高级计划中的预热实例

我在函数应用程序脚本中添加了一个UUID,以便每个Python Worker都有一个我可以跟踪的UUID。我正在使用 EP3 计划和 4 个 python 工作线程 (FUNCTIONS_WORKER_PROCESS_COUNT=4),我可以看到只有 2 个工作线程在横向扩展时才调用预热函数。这意味着在 2 个不热的工作线程上,前几个调用需要 5-10 秒才能运行,这是冷启动。

我还尝试设置 FUNCTIONS_WORKER_PROCESS_COUNT=1,使用 async 进行函数调用,然后将线程计数设置为 4。但是,这对于利用 vCPU 功率似乎没有按预期工作,因此扩展效果不佳。

我还能做什么来完全防止具有多个 python 工作线程的 Python azure 函数中的冷启动?我注意到有一些共享内存预览功能,但不确定这是否可以解决问题,或者是否可以使用其他功能。

python azure azure-functions
1个回答
0
投票

防止冷启动的一种方法是使用应用程序服务计划,您将有一个名为

Always on
的选项。据我所知,它使功能应用程序始终保持温暖:

enter image description here

根据微软文档

始终开启 如果闲置几分钟则唤醒该功能。

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