Sebbene le Azure Web App siano il luogo adatto per ospitare le nostre applicazioni web in tutta tranquillità, ignorandone la gestione, questo non vuol dire che possano essere esenti da problemi. Potremmo soffrire di un bug che apparentemente in circostanze misteriose ci porta a consumare CPU per molto tempo. Le cause possono essere le più disparate e in ogni caso abbiamo bisogno fondamentalmente di due cose:
- Capire cosa causa il problema per poterlo risolvere;
- Interrompere l'uso elevato della CPU per far riprendere il normale funzionamento.
Nel portale Azure dedicato alle Web App è presente una sezione Diagnose and solve problems dedicato proprio a risolvere problemi di vario genere che si possono presentare nelle nostre app. Di recente si è arricchito di una nuova funzionalità, che possiamo trovare sotto Diagnostic tools, di nome Proactive CPU Monitoring.
Acceduti a questa sezione troviamo un wizard che ci guida prima di tutto ad abilitare la funzionalità indicando vari parametri: il livello di CPU che la avvia, per quanto tempo, ogni quanto controllare l'utilizzo della CPU e cosa fare in caso di problemi.
La funzionalità si può attivare per un periodo di tempo limitato, dato che ovviamente non è risolutiva del problema. Nel secondo step, infatti, la sezione Observe ci mostra l'andamento della CPU e ci dà istruzioni su dove trovare il log di eventuali anomalie trovate.
La sezione Analyze ci dà invece accesso agli eventuali dump raccolti nel verificarsi di un problema. Non solo, infatti, possiamo riavviare il processo come indicato nella prima figura, ma possiamo anche produrre un file dmp. Se abbiamo caricato i simboli pdb (anche quelli non full) possiamo aprire questo file in Visual Studio e avere uno snapshot del processo al momento del problema. Possiamo quindi capire la situazione di ogni thread e dedurre se qualche funzione viene chiamata troppo spesso o va in loop.
Dato che il monitoraggio della CPU richiede un processo sempre attivo, è necessario disporre di un tier di tipo standard o premium.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Creare una libreria CSS universale: Clip-path
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Simulare Azure Cosmos DB in locale con Docker
Gestione degli stili CSS con le regole @layer
Path addizionali per gli asset in ASP.NET Core MVC
Sfruttare al massimo i topic space di Event Grid MQTT
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Il nuovo controllo Range di Blazor 9
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Ordinare randomicamente una lista in C#
Applicare un filtro per recuperare alcune issue di GitHub
Disabilitare automaticamente un workflow di GitHub (parte 2)