Pergunta

Eu tenho um aplicativo da web, que às vezes está pendurado. Quero investigar o motivo e preciso obter um despejo de memória do processo, quando ele está.

Portanto, minha idéia é monitorar o site, quando estou detectando o Hang, quero iniciar um script .bat que captura o despejo de memória e executa o iisReset para reiniciar para que o site comece a responder novamente.

Meu problema é que o ADPLUS inicia outro processo (CDB.exe) e retorna imediatamente. Preciso esperar que o CDB.exe termine, antes que eu possa executar o IisReset. Existe alguma maneira de fazer isso em um script em lote? Ou, posso especificar na linha de comando do ADPLUS, que ela não deve retornar até que o despejo de memória seja coletado?

Foi útil?

Solução

Em relação à segunda parte da sua pergunta, a resposta é sim: Você pode (1) especificar a espera na linha do Commmand (desde que você possa acessar e modificá -la); e (2) Aguarde o processo de terminar em um arquivo em lote.

Em sua forma mais simples, faça

(1) Use START /WAIT cdb parms em vez de apenas cdb parms

(2) Tente FOR /F "tokens=1,2" %a in ('TASKLIST ^| FIND /I "cdb.exe"') DO @ECHO %a %b e substitua eco pelo comando que você deseja.

Outras dicas

Para criar o despejo de memória do seu aplicativo da web, o Ferramentas de diagnóstico de depuração da Microsoft são sua melhor opção.

Você pode criar uma regra "IIS HANG", monitorar um URL específico e criar um despejo de memória sempre que nenhuma resposta for recebida dentro de um número especificado de segundos.

As ferramentas de diagnóstico de depuração não ajudarão você a reiniciar o IIS (ou seu pool de aplicativos), mas em geral as opções de reinicialização do pool de aplicativos internas devem ser suficientes para isso. Se você garantir que "Ativar pinging" esteja definido para o seu AppPool (na guia Health) e você também define os outros parâmetros de saúde/reciclagem adequadamente, seu aplicativo deve continuar respondendo, não importa o que aconteça.

Caso contrário, monitorar a pasta de saída com despejos de falhas da sua regra "iis hang" debugdiag e reiniciar o IIS sempre que novos arquivos aparecerem definitivamente devem fazer o truque ...

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