Назад | Перейти на главную страницу

Удаление одного процесса из нескольких под контролем ntauthority

В настоящее время у нас работает несколько процессов с одинаковым именем образа: w3wp.exe.

У одного из них есть утечка памяти, поэтому, пока разработчики не подключат, мы хотим запустить запланированную задачу, чтобы убить процесс до того, как на сервере закончится оперативная память.

Я использовал:

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

Это убивает процесс, когда использование памяти превышает 5 ГБ. Я выполняю это как запланированное задание каждые 5 минут.

Это работает, но также убивает другие экземпляры w3wp.exe. Все они работают под NTAUTHORITY.

Мой вопрос: есть ли способ изолировать один процесс, из которого несколько процессов работают под одним и тем же именем образа?

Кто-нибудь знает, как это сделать лучше?

Привет,

Майкл

Попробуйте в пакетном файле сделать следующее:

@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%

Изменить: на самом деле есть еще лучший способ:

Во-первых, вам нужно изолировать приложение в его собственном пуле приложений. Затем просто введите следующую команду:% windir% \ System32 \ inetsrv \ appcmd.exe перезапустите пул приложений "MyApplicationPool"

(используйте% windir% \ System32 \ inetsrv \ appcmd.exe list apppool, чтобы получить имя, если необходимо)

Это должно аккуратно переработать приложение (если оно действительно не зависло).