Alcuni problemi riportati da applicazioni server, come anche da applicativi tradizionali, possono essere ricondotti all'esaurimento di memoria. Una domanda che spesso ci si pone è se si possa risolvere il problema aumentando la disponibilità di memoria RAM (Random Access Memory), ovvero la memoria fisica installata sul server o sulla workstation. In taluni casi la risposta è affermativa ma sfortunatamente in molte altre situazioni un upgrade hardware non risolve il problema.
Un errore riportato come un esaurimento di memoria o di risorse può essere riferito ad un particolare tipo di memoria, con certi limiti, i quali non sono correlati alla quantità di memoria totale installata sulla macchina ma primariamente legati all'architettura del processore e a come è stato progettato il sistema operativo.
In questo post vengono analizzate e classificate le principali risorse di memoria gestite dal sistema operativo, sono poi considerati gli scenari generici di esaurimento per i vari casi trattati. In un seguente post si vedranno i principali parametri da verificare ed un cenno alle metodologie di troubleshooting. Poiché la piattaforma a 32 bit è più soggetta a problemi di esaurimento di risorse, per le evidenti limitazioni rispetto a quella a 64 bit, essa sarà l'oggetto primario del post. Le informazioni architetturali trattate sono comunque valide per ogni sistema Windows e salvo casi particolari applicabili anche alla seconda. Ove si quantifichino dei valori numerici sono invece da considerarsi specifici alla piattaforma a 32 bit.
I contenuti dei primi post su questa tematica saranno primariamente teorici ed architetturali, introduttivi a quelli che seguiranno da parte mia e dei miei colleghi, indirizzati alla risoluzione di problemi più specifici.
Per ciascuna delle risorse citate un consumo eccessivo ed incontrollato può sempre portare all'esaurimento, più frequentemente uno o più componenti possono allocare memoria dei vari tipi e non rilasciarla, tipicamente per un bug, anche in questo caso se non interviene un reboot si arriva più o meno velocemente all'esaurimento. Questo tipo di esaurimento è definito come memory leak.
Questo post ha voluto trattare una classificazione delle risorse comunemente denominate come "risorse di memoria" e gli scenari che possono dar luogo a dei problemi. Costituisce una base teorica per dei post più pratici e rivolti alla risoluzione di problemi reali che verranno trattati in futuro su questo blog.
Fabio LavatelliEscalation Engineer Microsoft Enterprise Platform Support