如何在App服务计划中的App之间分配资源

时间:2019-09-26 14:30:20

标签: azure azure-application-insights azure-app-service-plans azure-application-insights-profiler

如何在应用程序服务计划中的应用程序之间分配CPU /内存等资源。应用之间是否平等?任何一个应用程序都可以消耗90%的资源吗?我之所以这样问是因为,如果在应用程序服务计划中分配给应用程序的资源是动态的,我将创建多个插槽(一个用于开发,登台,生产),这样我将确保开发,登台不会消耗更多的资源和产品如果需要的话,该应用可以占用该应用服务的99%的资源

3 个答案:

答案 0 :(得分:1)

它们没有分割,它们是共享的。您无法根据afaik的“应用服务计划”控制应用的资源配额。因此,任何一个应用程序都可能会占用应用程序服务计划提供的所有资源。

答案 1 :(得分:0)

如果将服务计划应用于资源组,则该计划将在该组中的所有资源之间共享。同样,如果我们使用框架和CPU /内存配置特定资源,则根据配置分配CPU /内存。

答案 2 :(得分:0)

不可能在应用程序服务计划的单个节点内限制每个应用程序的资源使用情况。

但是,如果您有多个节点,则可以限制 app 扩展到多少个节点。

详细信息记录在这里:https://docs.microsoft.com/en-us/azure/app-service/manage-scale-per-app

这里是一个使用ARM模板的示例,其中工作程序数限制为5。

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters":{
        "appServicePlanName": { "type": "string" },
        "appName": { "type": "string" }
        },
    "resources": [
    {
        "comments": "App Service Plan with per site perSiteScaling = true",
        "type": "Microsoft.Web/serverFarms",
        "sku": {
            "name": "P1",
            "tier": "Premium",
            "size": "P1",
            "family": "P",
            "capacity": 10
            },
        "name": "[parameters('appServicePlanName')]",
        "apiVersion": "2015-08-01",
        "location": "West US",
        "properties": {
            "name": "[parameters('appServicePlanName')]",
            "perSiteScaling": true
        }
    },
    {
        "type": "Microsoft.Web/sites",
        "name": "[parameters('appName')]",
        "apiVersion": "2015-08-01-preview",
        "location": "West US",
        "dependsOn": [ "[resourceId('Microsoft.Web/serverFarms', parameters('appServicePlanName'))]" ],
        "properties": { "serverFarmId": "[resourceId('Microsoft.Web/serverFarms', parameters('appServicePlanName'))]" },
        "resources": [ {
                "comments": "",
                "type": "config",
                "name": "web",
                "apiVersion": "2015-08-01",
                "location": "West US",
                "dependsOn": [ "[resourceId('Microsoft.Web/Sites', parameters('appName'))]" ],
                "properties": { "numberOfWorkers": "5" }
            } ]
        }]
}

我不相信您可以为每个插槽设置工作者节​​点限制,据我所知,这是针对每个应用程序的设置(但是我还没有尝试过)。

取决于您的绩效目标预算;我建议不要在开发人员,暂存人员和产品之间共享应用程序服务计划。简单地,编译代码的行为会使应用程序变慢(取决于您缩放机器的高度)。

一个建议是在每个环境中都有单独的应用程序服务计划,然后在进入生产阶段(即插槽交换功能)时使用插槽进行零停机部署。

通常,我假设开发人员会运行实验代码,并且在过渡阶段可能希望加载测试(或其他测试),所以您不希望这会干扰生产流量。

但是,话虽如此,您将需要小心以确保您的开发和登台应用程序服务计划不会不必要地运行。因此,您将需要在不使用它们时设法删除它们。因此,根据您的性能/预算/开发工作,它会首先通知您是否要在一个应用程序服务计划中共享dev / stag / prod。