Pergunta

Eu tenho um site no meu servidor, e meu processo de trabalho IIS está usando 4GB RAM de forma consistente. O que devo estar verificando?

c:\windows\system32\inetsrv\w3wp.exe
Foi útil?

Solução

Gostaria de verificar o ajuste Seção CLR no documento Gulzar mencionado.

Como os outros cartazes apontou, qualquer objeto que implementa IDispose deve ter Dispose() chamado sobre ele quando terminar com, de preferência com a construção using.

Fire-se perfmon.exe e adicionar esses contadores:

  • Process \ Private Bytes
  • Memória do .NET CLR Nº de bytes em todas as pilhas
  • Process \ Conjunto de trabalho |
  • .NET CLR memória \ objeto grande tamanho Heap

Um aumento de Bytes privados, enquanto o número de bytes em todos contra Heaps permanece o mesmo indica não gerenciado Consumo memória.

Um aumento na ambos contadores indica conseguiu memória consumo

Outras dicas

verifique a seção sobre como solucionar os gargalos de memória em Sintonia .NET Application Performance

Se você tiver acesso ao código-fonte, você pode querer verificar que quaisquer objetos que implementam IDisposable estão sendo referenciados dentro declarações using ou ser devidamente eliminados quando você está feito com eles.

Using é uma construção C #, mas a idéia básica é que você está liberando recursos quando você está feito.

Outra coisa a verificar é grandes objetos se colocar no "em processo" estado da sessão ou cache.

Mais detalhes iria ajudar. Quantos aplicativos estão sendo executados dentro do pool de aplicativos? Existem aplicações ASP.NET na piscina?

Se você estiver executando ASP.NET, dê uma boa olhada no que você está armazenando nas variáveis ??de sessão e cache. Use PerfMon para verificar quantos Geração 0, 1 e 2 arrecadações estão ocorrendo. Desconfie de armazenamento de elementos de interface do usuário no estado de sessão ou cache de uma vez que irá impedir a instância de página inteira e todos os filhos da instância página seja recolhida também. Finalmente, verifique se você está fazendo um monte de concatenação. Isso pode causar muitas instâncias de objetos desde cordas .NET são imutáveis. Olhar em usar StringBuilder em vez.

Criar um mini-despejo do processo w3wp e usar WinDbg para ver o que os objetos estão na memória. Isto é o que a equipe de suporte IIS da Microsoft faz sempre que eles têm questões como esta.

Como outras pessoas observou causa comum deste problema é vazamento de recursos, também não é um problema conhecido com o servidor win2k3 e IIS6 KB916984

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top