Как ресурсы распределяются между приложениями в плане обслуживания приложений

Как ресурсы, такие как ЦП / память, распределяются между приложениями в плане обслуживания приложений. Равное распределение между приложениями? Может ли какое-либо приложение потреблять, скажем, 90% ресурсов. Я спрашиваю об этом, потому что, если ресурсы, выделенные приложениям в плане обслуживания приложений, являются динамическими, я создам несколько слотов (один для разработки, постановки, производства). Таким образом, я буду уверен, что разработчик, постановка не будет съедать больше ресурсов и продукции. приложение может занять, скажем, 99% ресурсов службы приложений, если это необходимо

3 ответа

Они не разделены, они общие. Вы не можете контролировать квоты ресурсов для приложений в рамках плана службы приложений, afaik. Таким образом, любое отдельное приложение может использовать все ресурсы, предлагаемые планом службы приложений.

Невозможно ограничить использование ресурсов для каждого приложения в пределах одного узла в плане обслуживания приложений.

Однако, если у вас несколько узлов, вы можете ограничить количество узлов, до которых масштабируется приложение.

Подробности описаны здесь: 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 вы захотите запустить экспериментальный код, а при постановке вы можете захотеть загрузить тест (или другие тесты), поэтому вы не хотите, чтобы это мешало производственному трафику.

Однако, сказав, что вам нужно быть осторожным, чтобы убедиться, что ваши планы обслуживания разработчиков и промежуточных приложений не работают без надобности. Таким образом, вам нужно будет удалить их, когда они не используются. Поэтому в зависимости от вашей производительности / бюджета / усилий по разработке он сообщит вам, хотите ли вы в первую очередь использовать dev / stag / prod в одном плане обслуживания приложений.

Если вы применили план обслуживания к группе ресурсов, то он используется всеми ресурсами в этой группе. Опять же, если мы настроим конкретный ресурс с помощью структуры и ЦП / памяти, тогда в зависимости от конфигурации выделяется ЦП / память.