【问题标题】:Azure Web Job - Performance impact of multiple functions in the same web job and/or multiple web jobs in the same web app?Azure Web 作业 - 同一个 Web 作业中的多个功能和/或同一个 Web 应用程序中的多个 Web 作业的性能影响?
【发布时间】:2016-10-26 23:02:08
【问题描述】:

通过 Web 作业部署新功能有 3 种方式:

  1. 创建一个新的 Web 应用,并部署一个包含该函数的 Web 作业。
  2. 向现有 Web 作业添加新功能(因此现在您在一个 Web 作业中拥有多个功能)。
  3. 将新的 Web 作业添加到 Web 应用程序(因此现在您在同一个 Web 应用程序中有多个 Web 作业)。

同一个 Web 应用程序上的所有 Web 作业和 Web 作业功能都托管在同一个 VM 上,因此可能所有 3 个的实质性影响是相同的。但我想知道有什么区别。

对于决定如何将新的网络作业功能添加到我的云解决方案有哪些指导?

  1. 带有网络作业的新网络应用
  2. 或现有网络应用中的新网络作业与其他网络作业
  3. 或现有网络作业中具有其他功能的新功能。

我对这 3 个选项的工作原理、指导、最佳做法和性能影响感兴趣。

【问题讨论】:

    标签: azure azure-webjobs azure-web-app-service


    【解决方案1】:

    这是一个很难回答的问题,我会尽力为您提供一些线索。 您应该记住以下几点:

    • 性能:如果您将每个都放在同一个作业中,则作业主机将在每次调用您的一个函数时创建一个新线程。在同一进程中线程过多影响性能。我的选择是限制在同一进程中运行的线程数。如果您在 Google 上搜索“多线程与多处理”,您会找到一些很好的答案。无论如何,没有通用的指导方针,您应该使用分析工具来帮助您确定适合您情况的最佳解决方案。

    • 崩溃:假设您在同一个工作中有 2 个函数。如果一个函数崩溃,它可能会导致整个工作崩溃。因此,您可能需要创建单独的作业来隔离需要弹性并始终运行的功能。

    • 配置:同一个 Web 应用中的多个作业可以共享配置(应用设置)。取决于您管理配置的方式(从门户或使用 app.config),您可能需要为具有不同配置的作业创建单独的 Web 应用程序。

    • 部署:当您在 webapp 中部署 webjob 时,会导致 webapp 重新启动。如果您有一个网站或其他需要继续运行的作业,您可能需要创建一个单独的 Web 应用程序,以便特定组件的新部署不会影响其他组件的可用性。

    • “缩放”:Webjobs 将在您的应用服务的所有实例上运行。您可以将特定作业或特定功能指定为单例。这也是您应该牢记的。

    否则您可能对Azure Functions 感兴趣。它使用自动扩展的动态应用服务计划,您只需在功能运行时付费。每个功能都是独立的,所以你完全不用担心:-)

    【讨论】:

    • 谢谢托马斯,这就是我正在寻找的答案。因此,每次调用一个函数时,都会启动一个新线程。因此,如果我有一个具有 2 个功能的连续网络作业,那么会有 2 个线程吗?还是 1 个线程?
    • 我们说的是触发函数吗?
    • 是的,连续的、触发的函数(比如由 blob 或队列触发)。
    • 因此,每次有新消息(新 blob,队列中的新消息)时,都会启动一个新线程。但这是可配置的:取决于您要同时处理多少条消息。
    • 嗨,Thomas,网络作业会持续运行和轮询,然后当它检测到新消息时,它会启动一个新线程来运行相应的功能?
    【解决方案2】:

    据我所知,您可以利用 WebJobs 在 Web 应用程序的上下文中执行基于不同类型(脚本、可执行程序等)的自定义作业。为了尽量减少 WebJobs 对 Web 应用程序性能的影响,您可以尝试在新的应用服务计划中创建一个空的 Azure Web 应用程序来托管您的 WebJobs,它可以执行一些长时间运行的工作流、I/O 密集型作业,CPU密集型作业等。我建议您可以参考best-practices-background-jobs。另外,还有一个关于Azure Webjobs: One Job with several Functions, or several Jobs with 1 function each的相关帖子,你可以参考一下。

    【讨论】:

    • 谢谢。但我正在寻找所有这些在 VM 资源方面如何协同工作,以便我可以根据高容量/低容量场景做出决策。
    猜你喜欢
    • 2014-11-02
    • 2021-11-21
    • 1970-01-01
    • 2020-08-05
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    相关资源
    最近更新 更多