Como posso pegar um despejo de memória do meu processo W3WP.exe?

1

Estou acompanhando o uso da CPU de uma compilação recente que fiz em nosso servidor Windows 2008 SP2. Aqui está o screenie do gerenciador de tarefas ...

Veja como se destaca? Eu gostaria de descobrir o que está causando isso. Antes de fazer qualquer coisa, acredito que precisarei de um Memory Dump. Atualmente, o processo está em torno da marca de 450MB.

Alguém tem alguma idéia de como eu posso pegar um despejo de memória quando picos sobre .. digamos .. 50%. Pico - > instantâneo. Não tiros multi-snap, apenas um. Eu sei como MANUALMENTE obter um despejo .. mas isso é muito difícil. Eu preciso de uma vez de despejo depois de um gatilho, diga .. cpu > 50%.

Então eu tenho que descobrir como depurá-lo.

Alguma sugestão?

    
por Pure.Krome 18.06.2009 / 08:33

5 respostas

1

Configure um alerta de desempenho e, na página de ação, execute um programa ou script em lote para gerar o despejo.

O SysInternals VMMap tem opções de linha de comando para scripts e pode fornecer as informações necessárias .

vmmap.exe -p w3wp.exe C:\memory.txt

A GUI é bastante útil também.

    
por 18.06.2009 / 19:23
2

Você pode pegar um despejo de memória com as Ferramentas de Depuração para Windows.

O script adplus.vbs pode fazer isso a partir da linha de comando, portanto, pode ser adicionado como a tarefa de um alerta em um conjunto de coleta de dados no Monitor de Confiabilidade e Desempenho.

O desafio é identificar o processo em um prazo mais longo, os processos do w3wp.exe normalmente são reciclados em um agendamento e, portanto, é necessário recriar a coleta de dados e os alertas.

Adicional: A SysInternals acaba de lançar uma nova ferramenta de linha de comando: ProcDump, para criar dumps de processo com suporte embutido para janelas suspensas (não-responsivas) e CPU acima de algum tempo. Consulte aqui .

    
por 18.06.2009 / 12:46
2

DebugDiag para o IIS pode ser programado para ter um despejo quando o aplicativo tem pendurado (contra certas regras). Se não houver um para uso da CPU (não me lembro do topo da minha cabeça, desculpe), o blog do DebugDiag tem um script VB que será anexado ao Perfmon e permitirá que você acione um dump quando determinados critérios forem atendidos - nesse caso, o uso da CPU poderá acionar um despejo de memória completo do w3wp.

Mais do que você poderia querer saber está contido no whitepaper " Como usar a Ferramenta de diagnóstico de depuração v1.1 (DebugDiag) para depurar processos no modo de usuário ".

Atualização: DebugDiag v2 agora está disponível.

    
por 18.06.2009 / 14:40
0

Se você está tentando descobrir o que está usando a CPU, use o Monitor de desempenho do usuário. Monitore o contador de "Processos"% de tempo do processador para todas as instâncias. Você pode apenas observar o gráfico ou configurá-lo para registrar em um arquivo CSV que você pode analisar no Excel.

JR

    
por 18.06.2009 / 10:58
0

Depuração:

  • A depuração nativa de despejos pode ser feita no VS2005 e no VS2008, apenas certifique-se de ter símbolos configurados para usar o servidor de símbolos da MS.

  • A depuração gerenciada (ASP.NET) pode ser feita no VS2010 (na versão Beta) ou no WinDbg com as extensões SOS.

Veja os seguintes blogs para mais detalhes:

Vários livros foram escritos sobre esse tópico, muito grandes para que esse espaço comece.

    
por 18.06.2009 / 12:50