Procedure consigliate per il servizio app Azure

Questo articolo riepiloga le procedure consigliate per l'uso del servizio app di Azure.

Inserimento in un percorso condiviso

Una soluzione del servizio app Azure è costituita da un'app Web e da un database o un account di archiviazione per contenere contenuto o dati. Quando queste risorse si trovano in aree diverse, la situazione può avere gli effetti seguenti:

  • Aumento della latenza nella comunicazione tra le risorse
  • Addebiti monetari per il trasferimento dei dati in uscita tra aree, come indicato nella pagina dei prezzi di Azure

La condivisione della condivisione è ideale per le risorse di Azure che compongono una soluzione. Quando si creano risorse, assicurarsi che si trovino nella stessa area di Azure, a meno che non siano presenti motivi aziendali o di progettazione specifici. È possibile spostare un'app servizio app nella stessa area del database usando la funzionalità di clonazione servizio app disponibile nei piani di servizio app Premium.

Aggiunta di certificati

L'aggiunta di certificati è una procedura in cui un'applicazione consente solo un elenco specifico di autorità di certificazione (CA), chiavi pubbliche, identificazioni personali o qualsiasi parte della gerarchia di certificati.

Le applicazioni non devono mai avere una dipendenza rigida o aggiungere al certificato TLS con caratteri jolly predefiniti (*.azurewebsites.net). servizio app è una piattaforma distribuita come servizio (PaaS), quindi questo certificato può essere ruotato in qualsiasi momento. Se il servizio ruota il certificato TLS con caratteri jolly predefinito, le applicazioni aggiunte al certificato interromperanno e interromperanno la connettività per le applicazioni hardcoded a un set specifico di attributi del certificato. Anche la periodicità con cui viene ruotato il certificato non è garantita perché la frequenza di rotazione può cambiare in qualsiasi momento.

Anche le applicazioni che si basano sull'aggiunta di certificati non devono avere una dipendenza rigida da un certificato gestito servizio app. servizio app certificati gestiti possono essere ruotati in qualsiasi momento, causando problemi simili per le applicazioni che si basano su proprietà stabili del certificato. È consigliabile fornire un certificato TLS personalizzato per le applicazioni che si basano sull'aggiunta di certificati.

Se l'applicazione deve basarsi sul comportamento di aggiunta del certificato, è consigliabile aggiungere un dominio personalizzato a un'app Web e fornire un certificato TLS personalizzato per il dominio. L'applicazione può quindi basarsi sul certificato TLS personalizzato per l'aggiunta del certificato.

Risorse di memoria

Quando le raccomandazioni relative al monitoraggio o al servizio indicano che un'app utilizza più memoria del previsto, prendere in considerazione la funzionalità di correzione automatica servizio app. È possibile configurare la correzione automatica usando web.config.

Una delle opzioni per la funzionalità di correzione automatica consiste nell'eseguire azioni personalizzate in base a una soglia di memoria. Le azioni vanno dalle notifiche tramite posta elettronica all'analisi tramite dump della memoria alla mitigazione sul posto riciclando il processo di lavoro.

Risorse CPU

Quando le raccomandazioni relative al monitoraggio o al servizio indicano che un'app usa più CPU del previsto o si verifica un aumento o un aumento del numero di istanze del piano di servizio app. Se l'applicazione è con stato, la scalabilità verticale è l'unica opzione. Se l'applicazione è senza stato, la scalabilità orizzontale offre maggiore flessibilità e un potenziale di scalabilità superiore.

Per altre informazioni sulle opzioni di ridimensionamento e scalabilità automatica servizio app, vedere Aumentare le prestazioni di un'app nel servizio app Azure.

Risorse socket

Un motivo comune per esaurire le connessioni TCP in uscita è l'uso di librerie client che non riutilizzano connessioni TCP o che non usano un protocollo di livello superiore, ad esempio HTTP keep-alive.

Esaminare la documentazione per ogni raccolta a cui fanno riferimento le app nel piano di servizio app. Assicurarsi che le librerie siano configurate o accessibili nel codice per un riutilizzo efficiente delle connessioni in uscita. Seguire anche le indicazioni della documentazione delle librerie per le corrette operazioni di creazione, rilascio o pulizia per evitare la perdita di connessioni. Anche se tali indagini sulle librerie client sono in corso, è possibile ridurre l'impatto aumentando il numero di istanze.

Richieste HTTP in uscita e Node.js

Quando si lavora con Node.js e molte richieste HTTP in uscita, è importante gestire il keep-alive HTTP. È possibile usare il pacchetto agentkeepalivenpm per semplificarne la gestione nel codice.

È necessario gestire sempre la risposta http anche se non si interviene nel gestore. Se la risposta non viene gestita correttamente, l'applicazione alla fine si blocca perché non sono disponibili altri socket.

Ecco un esempio di gestione della risposta quando si usa il http pacchetto o https :

const request = https.request(options, function(response) {
    response.on('data', function() { /* do nothing */ });
});

Se si esegue l'app servizio app in un computer Linux con più core, un'altra procedura consigliata consiste nell'usare PM2 per avviare più processi Node.js per eseguire l'applicazione. A tale scopo, specificare un comando di avvio nel contenitore.

Ad esempio, usare questo comando per avviare quattro istanze:

pm2 start /home/site/wwwroot/app.js --no-daemon -i 4

Backup dell'app

I backup in genere sono eseguiti in base a una pianificazione e richiedono l'accesso alla risorsa di archiviazione (per l'output dei file di cui è stato eseguito il backup) e ai database (per copiare e leggere il contenuto da includere nel backup). Il risultato dell'errore di accesso a una di queste risorse è un errore di backup coerente.

I due motivi più comuni per cui il backup dell'app non riesce sono impostazioni di archiviazione non valide e configurazione del database non valida. Questi errori si verificano in genere dopo le modifiche apportate alle risorse di archiviazione o di database o dopo le modifiche alle credenziali per l'accesso a tali risorse. Ad esempio, le credenziali potrebbero essere aggiornate per il database selezionato nelle impostazioni di backup.

Quando si verificano errori di backup, esaminare i risultati più recenti per comprendere il tipo di errore che si sta verificando. Per gli errori di accesso alle risorse di archiviazione, esaminare e aggiornare le impostazioni di archiviazione nella configurazione del backup. Per gli errori di accesso al database, esaminare e aggiornare le stringa di connessione come parte delle impostazioni dell'app. Procedere quindi con l'aggiornamento della configurazione di backup in modo da includere correttamente i database necessari.

Per altre informazioni sui backup delle app, vedere Eseguire il backup e il ripristino dell'app nel servizio app Azure.

App Node.js

La configurazione predefinita del servizio app Azure per le app Node.js è progettata per soddisfare al meglio le esigenze delle app più comuni. Per personalizzare la configurazione predefinita per l'app Node.js per migliorare le prestazioni o ottimizzare l'utilizzo delle risorse per CPU, memoria o risorse di rete, vedere Procedure consigliate e guida alla risoluzione dei problemi per le applicazioni Node nel servizio app Azure. Questo articolo descrive le impostazioni iisnode che potrebbe essere necessario configurare per l'app Node.js. Spiega anche come risolvere scenari o problemi con l'app.

Dispositivi IoT

È possibile migliorare l'ambiente quando si eseguono dispositivi Internet delle cose (IoT) connessi a servizio app.

Una pratica comune con i dispositivi IoT è l'aggiunta di certificati. Per evitare tempi di inattività imprevisti dovuti alle modifiche apportate ai certificati gestiti del servizio, non è consigliabile aggiungere mai i certificati al certificato predefinito *.azurewebsites.net o a un certificato gestito servizio app. Se il sistema deve basarsi sul comportamento di aggiunta del certificato, è consigliabile aggiungere un dominio personalizzato a un'app Web e fornire un certificato TLS personalizzato per il dominio. L'applicazione può quindi basarsi sul certificato TLS personalizzato per l'aggiunta del certificato. Per altre informazioni, vedere la sezione relativa all'aggiunta di certificati di questo articolo.

Per aumentare la resilienza nell'ambiente, non fare affidamento su un singolo endpoint per tutti i dispositivi. Ospitare le app Web in almeno due aree per evitare un singolo punto di errore ed essere pronti a eseguire il failover del traffico.

In servizio app è possibile aggiungere domini personalizzati identici a più app Web, purché queste app Web siano ospitate in aree diverse. Questa funzionalità garantisce che, se è necessario aggiungere certificati, è anche possibile aggiungere il certificato TLS personalizzato fornito.

Un'altra opzione consiste nell'usare un servizio di bilanciamento del carico davanti alle app Web, ad esempio Frontdoor di Azure o Gestione traffico di Azure, per garantire la disponibilità elevata per le app Web. Per altre informazioni, vedere Avvio rapido: Creare un'istanza di Frontdoor per un'applicazione Web globale a disponibilità elevata o Controllare il traffico del servizio app Azure con Gestione traffico di Azure.

Passaggi successivi

Per ottenere procedure consigliate di utilità pratica specifiche per la risorsa, usare servizio app diagnostica:

  1. Passare all'app Web nel portale di Azure.
  2. Aprire servizio app diagnostica selezionando Diagnostica e risoluzione dei problemi nel riquadro sinistro.
  3. Selezionare il riquadro Procedure consigliate .
  4. Selezionare Procedure consigliate per disponibilità e prestazioni o procedure consigliate per la configurazione ottimale per visualizzare lo stato corrente dell'app in relazione a queste procedure consigliate.

È anche possibile usare questo collegamento per aprire direttamente servizio app diagnostica per la risorsa: https://portal.azure.com/?websitesextension_ext=asd.featurePath%3Ddetectors%2FParentAvailabilityAndPerformance#@microsoft.onmicrosoft.com/resource/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/troubleshoot.