Temos um processo de implantação automatizado que é gerenciado principalmente por um arquivo em lote. Uma das primeiras etapas desse processo é parar um AppPool do IIS para que os arquivos atualizados possam ser copiados com segurança. Para fazer isso, chamamos PsExec assim:
PsExec.exe -accepteula %WEB_SERVER_MACHINE_NAME% cmd /c %%systemroot%%\system32\inetsrv\AppCmd.exe stop apppool /apppool.name:"%APP_POOL_NAME%" 2>&1
Onde estão as variáveis de ambiente (estes não são os valores reais, apenas para ilustração):
-
WEB_SERVER_MACHINE_NAME=\WEBSERVER01
-
APP_POOL_NAME=APP01
Todo o processo de implantação geralmente leva apenas alguns minutos. No entanto, parece que às vezes, aparentemente de forma aleatória, esse processo fica preso nesta etapa e parece esperar indefinidamente. Se eu verificar o servidor da web durante esse processo, AppPool
não será interrompido e a parada manual de AppPool
não terá efeito. Existem 6 sites diferentes que precisam ser implantados e isso pode acontecer em qualquer um dos sites.
Eu também tentei desativar a inicialização automática assim:
PsExec.exe -accepteula %WEB_SERVER_MACHINE_NAME% cmd /c %%systemroot%%\system32\inetsrv\AppCmd.exe set apppool /apppool.name:"%APP_POOL_NAME%" /autoStart:false 2>&1
E ocasionalmente, mas parece ficar parado neste passo às vezes. Então, parece ser um problema com PsExec
em vez de AppCmd
. Eu também tentei especificar um tempo limite de conexão para PsExec
, bem como encadear uma saída no final da chamada cmd
, assim:
PsExec.exe -accepteula -n 60 %WEB_SERVER_MACHINE_NAME% cmd /c %%systemroot%%\system32\inetsrv\AppCmd.exe stop apppool /apppool.name:"%APP_POOL_NAME%" ^& exit 0 2>&1
Alguém já encontrou esse problema antes? O que poderia fazer com que essa chamada de PsExec
parasse intermitentemente?