none
Identificar site que está consumindo memória

    Question

  • Pessoal,

    como faço para identificar dentro de uma poll qual dos sites esta consumindo mais ?

    Eu so estou conseguindo identificar a pool que consome mais mas não sei qual site dentro dele esta consumindo.


    Obrigado
    Sunday, January 11, 2009 7:23 PM

All replies

  • Olá Rafael,

    O ideal seria você criar uma app pool para cada site e através do comando iisapp verificar o PID de cada uma e verificar no task manager ou no log do PerfMon o seu consumo de memória.

    Dessa forma será mais fácil tirar um dump do processo em questão, pois o dump será menor.

    Recomendo que você verifique os seguintes artigos:

        "Quick things to check when you experience high memory levels in ASP.NET"
        http://support.microsoft.com/kb/893660

        "How to use the Debug Diagnostics Tool to troubleshoot high CPU usage by a process in IIS"
        http://support.microsoft.com/kb/919791

        "Debug Diagnostic Tool v1.1"
        http://www.microsoft.com/downloads/details.aspx?familyid=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en

        "IISSTATE"
        http://www.iisfaq.com/default.aspx?view=P197

    Qualquer dúvida não hesite em postar!

    []'s
    Tuesday, January 13, 2009 8:25 PM
  • Rafael,

    a utilização de uma pool para cada site me cria alguns problemas que eu não sei contornar.

    1 - São centenas de sites, portanto a criação manual de cada pool me tomaria grnde tempo

    2 - Se o iis desativa um pool especifico, eu não sei identificar. Atualmente possuo ferramentas que fazem teste de X em X periodo em alguns sites. Se eles estiverem de pé é porque os demais estão. Com pool isolado se um cair,como identifico ??

    3 - Ja tentei programar o debug diagnostic mas ele sempre diz a mesma coisa.. Nenhuma erro encontrado bararara... nenhuma recomendação..  O relatorio são sempre normais, e não consigo identificar nada incomum...

    Obs : li em algum lugar que não é recomendável utilização de várias pools. Isso é correto ?

    Obrigado pelo auxilio

    Wednesday, January 14, 2009 1:06 PM
  • Olá Rafael,

    Você pode utilizar vários sites em uma única appPool, mas isto está relacionado com o grau de isolamento que você pretende utilizar em seus sites. Pois caso ocorra algum problema em um site, um crash ou memory leak, por exemplo, todos os outros sites irão sofrer com o esse problema.

    Outra razão de utilizar poucos sites é o fato de ser mais simples o diagnóstico de qualquer problema, pois não será possível verificar o consumo de cada site, mas sim do processo da worker process: W3WP.exe(IIS 6.0) ou ASPNET_WP.exe(IIS 5.0).

    Caso ocorra qualquer falha, os sites da appPool em questão ficarão indisponíveis e através dos Logs do IIS e da appPool é possível verificar o motivo.

    Mas caso não seja possível verificar o problema, a melhor maneira de detectar o problema seria utilizar o Debug Diag e criar algumas regras especificas, dependendo do problema que você está enfrentando (crash, hang ou memory leak).

    Uma maneira de ficar monitorando os processos da appPool seria através do DebugDiag. Na aba Processes é possível verificar o consumo de memória e o nome de cada appPool.

    Existem algumas recomendações para a utilização de AppPool:

    .Criar application pool específicos para sites críticos

    .Usar o mesmo application pool, para sites não críticos, e simples quando possível
      Economia de recursos do servidor
      Sites/Aplicações de um determinado cliente
     
    .Criar um application pool chamado "Timeout"
      Configurar valores agressivos de reciclagem (horário, requisições)
      Colocar sites problemáticos neste Application Pool

    []'s
    Tuesday, January 20, 2009 11:57 AM