You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure应用自动缩放场景下,CPU达90%时如何自动重启单个实例?

Azure App Autoscale 问题解决方案

一、实现单个实例CPU达90%时自动重启

方法1:Azure Monitor警报 + 自动化Runbook

  • 创建Azure Monitor指标警报:
    • 目标资源选择你的App Service计划
    • 指标选择CPU百分比,维度勾选实例,聚合方式设为平均值,阈值设置为90%
    • 触发条件设为「连续5分钟超过阈值」(可根据业务实际调整时长)
  • 编写PowerShell Runbook(需在Azure自动化账户中创建):
    param(
        [Parameter(Mandatory=$true)]
        [string]$ResourceGroupName,
        [Parameter(Mandatory=$true)]
        [string]$WebAppName,
        [Parameter(Mandatory=$true)]
        [string]$InstanceName
    )
    
    # 使用托管身份连接Azure
    Connect-AzAccount -Identity
    # 重启指定实例
    Restart-AzWebAppSlot -ResourceGroupName $ResourceGroupName -Name $WebAppName -Slot $InstanceName
    
  • 配置警报动作:将警报关联到上述Runbook,传递资源组、应用名称和触发警报的实例名称参数,触发后自动重启高负载实例。

方法2:自定义健康检查触发重启

修改应用的健康检查端点逻辑,当当前实例CPU使用率持续高于90%时,返回5xx状态码。App Service会识别该实例为不健康,自动触发重启操作。

二、资源分配优化方案

  • 关闭ARR粘性会话:
    如果你的App Service启用了粘性会话,用户请求会被固定路由到某一个实例(即你提到的YX后缀主实例),导致该实例持续过载。若业务不依赖会话粘性,建议直接关闭该配置,让流量均匀分配到所有实例。
  • 调整自动缩放规则:
    当前基于平均CPU的扩容规则无法识别单个实例过载的情况,建议:
    • 添加实例级缩放规则:当任意单个实例CPU超过80%时触发扩容
    • 将缩放指标从平均CPU改为最大CPU,确保高负载实例能触发扩容动作
  • 排查主实例过载根源:
    结合你提供的实例级CPU统计图表,检查主实例是否存在内存泄漏、进程死锁,或是有定时任务/后台任务仅在主实例运行的情况。这类单实例负载可迁移到Azure Functions或独立的计算服务,避免占用主实例资源。
  • 升级实例规格:
    如果单实例的资源规格(如CPU、内存)不足以承载负载,可升级App Service计划的实例层级(例如从B系列升级到D系列),提升单实例的处理能力。

内容的提问来源于stack exchange,提问作者default

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 22:07:46