Matando um único processo de múltiplos processos sob autoridade

1

Atualmente, temos alguns processos em execução com o mesmo nome de imagem: w3wp.exe.

Um deles tem um vazamento de memória, então até que os desenvolvedores conectem que estamos querendo executar uma tarefa agendada para matar o processo antes que a RAM acabe no servidor.

Eu tenho usado:

taskkill / F / FI "MEMUSAGE gt 5000000" / IM "w3wp.exe"

Isso mata o processo sempre que o uso da memória for > 5 GB. Eu tenho executado isso como uma tarefa agendada a cada 5 minutos.

Isso funciona, mas também mata as outras instâncias do w3wp.exe. Eles estão todos correndo sob NTAUTHORITY.

A minha pergunta é, existe uma maneira de isolar um único processo de onde vários processos estão sendo executados sob o mesmo nome de imagem?

Alguém sabe de uma maneira melhor de fazer isso?

Felicidades,

Michael

    
por Michael 18.05.2012 / 09:30

1 resposta

1

Tente o seguinte em um arquivo em lotes:

@echo off
set tmpfile=%tmp%\tasklist~.txt

tasklist /FI "MEMUSAGE gt 5000000" | FIND "w3wp.exe" > "%tmpfile%"
for /F "tokens=2*" %%i in (%tmpfile%) do @taskkill /f /PID %%i

del %tmpfile%

Editar: na verdade, existe uma maneira ainda melhor:

Primeiro, você precisa isolar o aplicativo em seu próprio pool de aplicativos. Então você acabou de emitir o seguinte comando:     % windir% \ System32 \ inetsrv \ appcmd.exe reciclar o apppool "MyApplicationPool"

(use% windir% \ System32 \ inetsrv \ appcmd.exe liste o apppool para obter o nome, se necessário)

Isso deve reciclar o aplicativo normalmente (a menos que esteja realmente preso).

    
por 18.05.2012 / 11:05