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
Usare una container image come runner di GitHub Actions
Eseguire una query su SQL Azure tramite un workflow di GitHub
Effettuare il pull di git LFS in un workflow di GitHub
Eseguire attività basate su eventi con Azure Container Jobs
Elencare le container images installate in un cluster di Kubernetes
Implementare il throttling in ASP.NET Core
Effettuare chiamate con versioning da Blazor ad ASP.NET Core
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Creare alias per tipi generici e tuple in C#
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
Migliora le tue soluzioni ASP.NET Core con Azure OpenAI