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 animazioni complesse con Lottie nella Universal Windows Platform
Usare Blazor Server con Azure SignalR Service
Dati binari in realtime con ASP.NET Core SignalR
Creare un interceptor in Entity Framework Core 3
Il task PowerShell in Azure DevOps
From www to PWA in 15 minutes
Diagnosticare i problemi di performance con MiniProfiler su ASP.NET Core MVC
Sfruttare la dependency injection in un Filter di ASP.NET Core
Nasce DOpsItalia.com: tutto su DevOps e container
Aggiungere il metodo SelectMany alla classe Array in TypeScript
Applicare un firewall web con Azure Front Door
Pubblicare immagini Docker su un container privato di Azure
I più letti di oggi
- DevOps in a .NET world
- What's new in Xamarin and Visual Studio for macos
- Building modern web apps with Blazor
- WPF and Windows Apps in .NET Core 3
- ASP.NET Core 2
- Blazor: un viaggio nello state management
- C# 8
- ecco tutte le novità pubblicate sui nostri siti questa settimana: http://aspit.co/wkly buon week-end!