当我们的应用程序服务计划扩展时,我想限制特定网络作业的实例数量。
虽然我知道有可能拥有 singleton instance如果我们想将实例数量限制为 n,其中 n 是大于 1 但小于总数 的数字,我找不到任何文档可以提供帮助应用服务计划中的实例数。例如,我们的应用服务计划可以扩展到运行 4 个实例,但最多只允许其中 2 个实例运行给定的 Web 作业。
我(当然)知道我们可以只有 2 个具有不同扩展规则的应用服务计划,但如果可能的话,我真的只想在现有计划中处理这个问题。
背景:
我们在应用程序服务计划中运行网络应用程序和网络作业,设置为当 CPU 使用率增加到超过特定阈值时自动扩展。
我们的网络作业执行“后台”处理任务,这些任务对时间不是特别敏感,但可能会占用大量 CPU 资源。如果队列中有大量消息,这些 Web 作业可能会消耗几乎所有可用的 CPU 资源并导致大规模横向扩展。如果我们使用单例 Webjob,那么即使在高峰时间,横向扩展也只会添加一个额外实例,而其他所有内容仍然保持响应。这很好,除非网络作业需要很长时间才能清除队列。我们真的希望能够更好地平衡这一点,以允许几个实例运行 Web 作业,从而允许稍快的处理时间,但避免将 cpu 密集型 Web 作业添加到第三个实例。
最佳答案
Azure Web App 支持按应用程序缩放。但它仅适用于高级 SKU 应用服务计划。按应用程序扩展独立于托管应用程序的应用程序服务计划来扩展应用程序。这样,应用服务计划可以扩展到 10 个实例,但应用程序可以设置为仅使用 5 个。
对于您的问题,您可以创建一个新的 Web 应用来托管您的 WebJob。
有关如何使用按应用缩放的信息,以下链接可供您引用。
关于azure - 横向扩展时限制 azure webjob 的实例数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45067648/