App Service Plans¶
Recommendation types¶
Terminate¶
Fires when a plan has hosted zero apps for the entire lookback window. An empty plan bills its full SKU cost while serving nothing. No minimum metric coverage is required; the orphan check runs against inventory snapshots alone.
Rightsize¶
Fires when average CPU and average memory are both below their minimum thresholds, and peak CPU, peak memory, and maximum HTTP queue depth have all stayed within their safe ceilings. The engine suggests the next lower SKU in the same tier family (e.g. P2v3 to P1v3).
Applies only to plans hosting at least one app. Empty plans receive a terminate recommendation instead.
When memory data is unavailable, rightsize can fire based on CPU alone at reduced priority.
Scale-in¶
Fires under the same utilization conditions as rightsize when the plan has more than one instance. The engine recommends reducing the instance count by half (rounded down, minimum one instance removed). Applies only to plans hosting at least one app.
When both rightsize and scale-in qualify simultaneously, the engine emits a single recommendation. The option with higher estimated savings is the primary; the other is stored as an alternative in the recommendation evidence.
Thresholds¶
| Threshold | Default | What it means |
|---|---|---|
| CPU min % | 5 | Average CPU must be below this for rightsize or scale-in to fire |
| CPU max safe % | 50 | Peak CPU above this blocks rightsize and scale-in |
| Memory min % | 5 | Average memory must be below this for rightsize or scale-in to fire |
| Memory max safe % | 80 | Peak memory above this blocks rightsize and scale-in |
| HTTP queue max safe | 5 | Maximum daily-average HTTP queue length. Blocks rightsize and scale-in if exceeded |
CPU and memory behave differently under load. CPU recovers between requests: a spike to 70% resolves within seconds and the next request sees full capacity. Memory does not. Once a process allocates memory for a cache, session, or large object, that memory stays allocated until the process releases it or restarts. A plan peaking at 70% memory is closer to the edge than one peaking at 70% CPU, because the memory use is more likely to persist and grow. The memory max safe default (80%) is set conservatively for this reason.
Auto-implementation¶
The engine detects implementation automatically on each run. Detection applies to any recommendation in the In Review, Planned, Snoozed, or Ignored status. A team member may act on a recommendation that was not formally planned, and those savings are captured regardless of what status the recommendation was in at the time.
- Terminate: when the plan's inventory status changes to
Deleted, the recommendation is markedimplemented. - Rightsize: when the current SKU tier in inventory matches the recommended SKU, the recommendation is marked
implemented. This also covers the case where the alternative recommendation from a merged rightsize+scale-in pair was applied instead of the primary. - Scale-in: when the current instance count in inventory is at or below the recommended count, the recommendation is marked
implemented.