Condividi tramite


Ridimensionamento automatico del Servizio app di Azure

Nota

Il ridimensionamento automatico è disponibile per tutti i tipi di app: Windows e Linux (distribuzione come codice e contenitore). Il ridimensionamento automatico non è supportato per il traffico dello slot di distribuzione.

La scalabilità automatica è una nuova opzione di scalabilità orizzontale che gestisce automaticamente le decisioni di ridimensionamento per le app Web e i piani di Servizio app. È diverso dal ridimensionamento automatico di Azure preesistente, che consente di definire regole di ridimensionamento in base a pianificazioni e risorse. Con la scalabilità automatica, è possibile modificare le impostazioni di ridimensionamento per migliorare le prestazioni dell'app ed evitare problemi di avvio a freddo. Le istanze della piattaforma preriscaldano da usare come buffer quando si esegue la scalabilità orizzontale, garantendo transizioni di prestazioni uniformi. Vengono addebitati costi al secondo per ogni istanza, incluse le istanze preriscaldate.

Confronto tra le opzioni di scale-out e riduzione disponibili nel servizio app:

  Manualee Autoscale Ridimensionamento automatico
Piani tariffari disponibili Basic e Up Standard e Up Piani tariffari Premium V2 (P1V2, P2V2, P3V2) e Premium V3 (P0V3, P1V3, P2V3, P3V3, P1MV3, P2MV3, P3MV3, P4MV3, P5MV3)
Ridimensionamento basato su regole No No, la piattaforma gestisce lo scale-out e la riduzione in base al traffico HTTP.
Ridimensionamento basato sulla pianificazione No No
Istanze sempre pronte No, l'app Web viene eseguita sul numero di istanze ridimensionate manualmente. No, l'app Web viene eseguita in altre istanze disponibili durante l'operazione di scale-out, in base alla soglia definita per le regole di ridimensionamento automatico. Sì (minimo 1)
Istanze preriscaldate No No Sì (impostazione predefinita 1)
Numero massimo per app No No

Funzionamento del ridimensionamento automatico

È possibile abilitare il ridimensionamento automatico per un piano di servizio app e configurare un intervallo di istanze per ciascuna delle app Web. Quando l'app Web inizia a ricevere traffico HTTP, il servizio app monitora il carico e aggiunge istanze. Le risorse possono essere condivise quando sono necessarie più app Web all'interno di un piano di servizio app per eseguire lo scale-out contemporaneamente.

Ecco alcuni scenari in cui è consigliabile scalare automaticamente:

  • Non si vogliono configurare le regole di scalabilità automatica in base alle metriche delle risorse.
  • Si vuole che le app Web all'interno dello stesso piano di servizio app si ridimensionino in modo diverso e indipendentemente l'uno dall'altro.
  • L'app Web è connessa a un database o a un sistema legacy, che potrebbe non essere scalabile più velocemente dell'app Web. La scalabilità automatica consente di impostare il numero massimo di istanze su cui è possibile ridimensionare il piano di servizio app. Questa impostazione consente all'app Web di non sovraccaricare il back-end.

Abilitare il ridimensionamento automatico

Il burst massimo è il numero massimo di istanze che il piano di servizio app può aumentare in base alle richieste HTTP in ingresso. Per i piani Premium v2 e v3, è possibile impostare un burst massimo fino a 30 istanze. Il burst massimo deve essere maggiore o uguale al numero di ruoli di lavoro specificati per il piano di servizio app.

Per abilitare il ridimensionamento automatico, passare al menu a sinistra dell'app Web e selezionare Scale-out (piano di servizio app). Selezionare Automatico, aggiornare il valore Burst massimo e selezionare il pulsante Salva.

Ridimensionamento automatico nel portale di Azure

Impostare il numero minimo di istanze dell'app Web

Istanze sempre pronte è un'impostazione a livello di app per specificare il numero minimo di istanze. Se il carico supera quello che le istanze sempre pronte possono gestire, vengono aggiunte ulteriori istanze (fino al burst massimo specificato per il piano di servizio app).

Per impostare il numero minimo di istanze dell'app Web, passare al menu a sinistra dell'app Web e selezionare Scale-out (piano di servizio app). Aggiornare il valore Istanze sempre pronte e selezionare il pulsante Salva.

Screenshot delle istanze sempre pronte

Impostare il numero massimo di istanze dell'app Web

Il limite massimo di scalabilità imposta il numero massimo di istanze su cui un'app Web può essere ridimensionata. Il limite massimo di scalabilità è utile nei casi in cui un componente downstream come un database ha una velocità effettiva limitata. Il valore massimo per app può essere compreso tra 1 e il burst massimo.

Per impostare il numero massimo di istanze dell'app Web, passare al menu a sinistra dell'app Web e selezionare Scale-out (piano di servizio app). Selezionare Imponi limite di scale-out, aggiornare il limite di scalabilità massima e selezionare il pulsante Salva.

Screenshot del limite massimo di scalabilità

Aggiornare le istanze preriscaldate

L'impostazione delle istanze preriscaldate fornisce istanze preriscaldate come buffer durante gli eventi di scalabilità e attivazione HTTP. Le istanze preriscaldate continuano a fungere da buffer fino a quando non viene raggiunto il limite massimo di scale-out. Il numero di istanze preriscaldate predefinito è 1 e, nella maggior parte degli scenari, questo valore deve rimanere 1.

Non è possibile modificare l'impostazione delle istanze preriscaldate nel portale. Sarà invece necessario usare l'interfaccia della riga di comando di Azure.

Disabilitare il ridimensionamento automatico

Per disabilitare il ridimensionamento automatico, passare al menu a sinistra dell'app Web e selezionare Scale-out (piano di servizio app). Selezionare Manuale, quindi selezionare il pulsante Salva.

Screenshot del ridimensionamento manuale

Il ridimensionamento automatico supporta le app per le funzioni di Azure?

Attenzione

Il ridimensionamento automatico è disabilitato quando le app Web del servizio app e le app per le funzioni di Azure si trovano nello stesso piano del servizio app.

No, è possibile avere solo app Web del servizio app di Azure nel piano di servizio app in cui si vuole abilitare il ridimensionamento automatico. Per Funzioni, è consigliabile usare invece il piano Premium di Funzioni di Azure.

Come funziona il ridimensionamento automatico in background?

Le applicazioni impostate per il ridimensionamento automatico vengono monitorate continuamente, con valutazioni dell'integrità del ruolo di lavoro che si verificano almeno una volta ogni qualche secondo. Se il sistema rileva un aumento del carico sull'applicazione, i controlli di integrità diventano più frequenti. In caso di deterioramento dell'integrità del ruolo di lavoro e rallentamento delle richieste, vengono richieste istanze aggiuntive. La velocità con cui vengono aggiunte istanze varia in base al modello di carico e al tempo di avvio dell'applicazione singola. Le applicazioni con tempi di avvio brevi e picchi intermittenti di carico potrebbero avere una macchina virtuale aggiunta tra pochi secondi e un minuto.

Una volta ridotto il carico, la piattaforma avvia una verifica per il potenziale ridimensionamento. Questo processo inizia in genere circa 5-10 minuti dopo l'aumento del carico. Durante il ridimensionamento, le istanze vengono rimosse con una frequenza massima che va dai pochi secondi al minuto.

Inoltre, se più applicazioni Web vengono distribuite nello stesso piano di servizio app, la piattaforma cerca di allocare risorse tra le istanze disponibili in base al carico di ogni singola applicazione Web.

Come si riceve una fattura per le istanze preriscaldate?

Per comprendere come vengono fatturate le istanze preriscaldate, si consideri questo scenario: si supponga che l'app Web abbia cinque istanze sempre pronte, insieme a un'istanza preriscaldata impostata come predefinita.

Quando l'app Web è inattiva e non riceve alcuna richiesta HTTP, viene eseguita con le cinque istanze sempre pronte. Durante questo periodo di tempo, non viene addebitata alcuna fattura per le istanze preriscaldate, perché le istanze sempre pronte non vengono usate e pertanto non viene allocata alcuna istanza preriscaldata.

Tuttavia, non appena l'app Web inizia a ricevere richieste HTTP e le cinque istanze sempre pronte diventano attive, viene allocata un'istanza preriscaldata e viene avviata la fatturazione.

Se la frequenza delle richieste HTTP continua ad aumentare e il servizio app decide di superare le cinque istanze iniziali, inizierà a usare l'istanza preriscaldata. Ciò significa che, quando sono presenti sei istanze attive, viene eseguito immediatamente il provisioning di una settima istanza per riempire il buffer preriscaldato.

Questo processo di ridimensionamento e preriscaldamento continua fino a quando non viene raggiunto il numero massimo di istanze per l'app. È importante notare che nessuna istanza viene preriscaldata o attivata oltre il numero massimo di istanze.

Perché AppServiceHTTPLogs ha voci di log simili a "/admin/host/ping" con stato 404?

Il ridimensionamento automatico del servizio app controlla periodicamente l'endpoint /admin/host/ping insieme ad altri meccanismi di controllo dell’integrità inerenti alla piattaforma. Questi controlli sono funzioni che vengono implementate specificamente. In alcuni casi, a causa delle configurazioni della piattaforma esistenti, gli errori 404 possono essere restituiti da questi ping. Tuttavia, è importante notare che questi errori 404 non dovrebbero influire sulla disponibilità o sulle prestazioni di ridimensionamento dell'app.

Se l'app Web restituisce uno stato 5xx, questi ping dell'endpoint possono causare riavvii intermittenti, anche se è insolito. Attualmente stiamo implementando miglioramenti per risolvere questi riavvii intermittenti. Fino a quel momento, assicurarsi che l'app Web non restituisca uno stato 5xx in questo endpoint. Tenere presente che questi endpoint ping non possono essere personalizzati.

Come è possibile tenere traccia del numero di istanze di scale-out durante l'evento di ridimensionamento automatica?

La metrica AutomaticScalingInstanceCount indicherà il numero di macchine virtuali in cui è in esecuzione l'app, inclusa l'istanza preriscaldata se viene distribuita. Questa metrica può essere usata anche per tenere traccia del numero massimo di istanze con scale-out dall'app Web durante un evento di ridimensionamento automatico. Questa metrica è disponibile solo per le app con ridimensionamento automatico abilitato.

In che modo l'affinità ARR influisce sul ridimensionamento automatico?

Il Servizio app di Azure usa i cookie di Application Request Routing noti come affinità ARR. I cookie di affinità ARR limitano il ridimensionamento perché inviano richieste solo ai server associati al cookie, anziché a qualsiasi istanza disponibile. Per le app che archiviano lo stato, è preferibile aumentare le prestazioni (aumentare le risorse in una singola istanza). Per le app senza stato, lo scale-out (aggiunta di altre istanze) offre maggiore flessibilità e scalabilità. I cookie di affinità ARR sono abilitati per impostazione predefinita nel servizio app. A seconda delle esigenze dell'applicazione, è possibile scegliere di disabilitare i cookie di affinità ARR quando si usa il ridimensionamento automatico.

Per disabilitare i cookie di affinità ARR: selezionare l'app del servizio app e, in Impostazioni, selezionare Configurazione. Selezionare quindi la scheda Impostazioni generali. In Affinità ARR selezionare Disattivata e quindi selezionare il pulsante Salva.

Altre risorse