Gestisco un server Windows 2008 (bene, su Amazon EC2) con IIS e un'app Web .NET4. L'altro giorno ho ricevuto un avviso di memoria e sono andato a guardare, e sicuramente la memoria di processo è cresciuta nel tempo attraverso una sorta di perdita lenta. Non è cresciuto molto, proprio come 60M a 200M, ma stava succedendo abbastanza altro con la scatola che ha superato la nostra soglia piuttosto bassa (75%) per spegnere il monitor.
Ho riciclato il pool di app e la memoria liberata e, dopo aver esaminato le statistiche, ho notato che lo spazio di swap veniva utilizzato in modo significativo e che oltre 1 GB di esso veniva liberato con quel riciclo.
Forse questa è una domanda di base, ma io sono un ragazzo UNIX e sono abituato a scambiarmi non abituandomi fino a quando non avrai esaurito la memoria. Questa scatola non ha mai superato il 75% di utilizzo della memoria. È una cosa di Windows o una cosa di .NET o una cosa di Amazon? Ho il sospetto che in questa app ci sia una perdita di memoria molto più grande di quanto sospetti: non sta passando da 60M a 200M, sta perdendo da 60M a 1.2GB, ma gran parte di questo sta andando in qualche modo "freddo" e viene spinto fuori per scambiare?
Ho il riciclo della memoria impostato nel pool di applicazioni, ma innesca la memoria piena della scatola, quindi questa app potrebbe diventare davvero grande prima che ricicli automaticamente.
Potrei impostare un riciclaggio "a tempo" regolare, ma questa è una soluzione alternativa, chiederò allo sviluppatore di riparare l'app ma devo capire cosa sta succedendo qui con l'uso dello scambio per essere sicuro di aver capito bene.
Modifica con maggiori informazioni: memoria di istanza: 1,7 GB di scambio: 4,5 GB
Vedo il processo w3wp.exe in taskmgr che mostra quella memoria: 211.000 k. Ma quando l'ho riavviato (è nel suo pool di app ed è l'unica app sulla scatola), il suo utilizzo della memoria è sceso al suo normale punto di partenza di 60M e come 1 GB + di swap anche liberato. In taskmgr ho appena avuto la solita statistica Memory (Private Working Set), ma ho visto il cambio di swap tramite il mio altro monitoraggio (Cloudkick). Tornando indietro e guardandolo oggi, la memoria è tornata a 195M sul processo (1,2 GB in totale) e lo swap è passato da 1,0 GB a 1,1 GB, ma non è tornato indietro nel modo in cui si trovava (graficamente nel tempo, è un strisciamento lento).
Sono meno preoccupato per questa app specifica e più preoccupato solo di capire quando Windows scambia e come lo usa, e cosa preoccuparsi della data memoria di Windows e dell'utilizzo dello scambio in generale.