应用服务计划中的应用程序之间的 CPU/内存等资源如何分配。应用程序之间是否平等分配?任何一个应用程序都可以消耗 90% 的资源吗?我问这个是因为如果在应用服务计划中分配给应用的资源是动态的,我将创建几个插槽(一个用于开发、登台、产品)这样我可以确保开发、登台不会占用更多资源和产品如果需要,应用可以占用应用服务 99% 的资源
3 回答
无法在应用服务计划的单个节点内限制每个应用的资源使用量。
但是,如果您有多个节点,您可以限制应用程序扩展到多少个节点。
此处记录了其详细信息: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、staging 和 prod 之间共享应用程序服务计划。简单地编译代码的行为会减慢应用程序的速度(取决于你对机器的扩展程度)。
一种建议是为每个环境制定单独的应用程序服务计划,然后在转向生产时使用插槽进行零停机部署,即插槽交换功能。
通常我会假设在 dev 上你会想要运行实验代码,并且在 staging 中你可能希望加载测试(或其他测试),所以你不希望这会干扰生产流量。
但是,话虽如此,您需要小心确保您的开发和暂存应用程序服务计划不会不必要地运行。因此,您需要在不使用时管理删除它们。因此,根据您的性能/预算/开发工作,它会首先通知您是否希望在一个应用服务计划中共享 dev/stag/prod。
它们不是分裂的,而是共享的。您无法控制应用服务计划下应用的资源配额,afaik。因此,任何单个应用程序都可能占用应用程序服务计划提供的所有资源。
如果您将服务计划应用于资源组,则该服务计划将在该组内的所有资源之间共享。同样,如果我们使用框架和 CPU/内存配置特定资源,则根据配置分配 CPU/内存。