Administro um servidor Windows 2008 (também no Amazon EC2) executando o IIS e um aplicativo da Web .NET4. Recebi um alerta de memória no outro dia e olhei, e com certeza a memória do processo havia aumentado ao longo do tempo através de algum tipo de vazamento lento. Ele não cresceu muito, assim como 60 a 200 milhões, mas o suficiente estava acontecendo com a caixa que ultrapassava nosso limite bastante baixo (75%) para acionar o monitor.
Reciclei o pool do aplicativo e a memória foi liberada e notei ao revisar as estatísticas que o espaço de troca estava sendo usado significativamente e que mais de 1 GB dele foi liberado com essa reciclagem.
Talvez essa seja uma pergunta básica, mas eu sou um cara do UNIX e estou acostumado a trocar de não me acostumar até você ficar sem memória. Essa caixa nunca foi acima de 75% do uso de memória. Isso é uma coisa do Windows ou .NET ou Amazon? Eu suspeito que exista um vazamento de memória muito maior neste aplicativo do que se suspeita - não está vazando de 60M para 200M, está vazando de 60M para 1.2GB, mas muito disso está de alguma forma ficando "frio" e sendo pressionado para trocar?
Eu tenho a reciclagem de memória definida no pool de aplicativos, mas ela dispara a memória cheia da caixa, para que esse aplicativo possa ficar realmente muito grande antes de ser reciclado automaticamente.
Eu poderia configurar a reciclagem "cronometrada" regular, mas essa é uma solução alternativa, solicitarei ao desenvolvedor que corrija o aplicativo, mas preciso entender o que está acontecendo aqui com o uso da troca para garantir que estou entendendo direito.
Edite com mais informações: memória da instância: 1,7 GB swap: 4,5 GB
Eu vejo o processo w3wp.exe no taskmgr mostrando essa Memória: 211.000k. Mas quando eu o reiniciei (ele está em seu próprio pool de aplicativos e é o único aplicativo na caixa), seu uso de memória caiu para o ponto inicial normal de 60M e como 1 GB + de troca também foi liberado. No taskmgr, eu tinha apenas as estatísticas usuais da Memória (Conjunto de Trabalho Privado), mas vi a troca mudar através do meu outro monitoramento (Cloudkick). Voltando e analisando hoje, a memória está recuperando até 195M no processo (1,2 GB no total) e a troca subiu de 1,0 GB para 1,1 GB, mas nem sempre voltou até onde estava (gráficos ao longo do tempo, é um lenta fluência).
Estou menos preocupado com esse aplicativo específico e mais apenas com o entendimento de quando o Windows troca e como ele usa isso, e com o que se preocupar com a memória do Windows e o uso de troca em geral.