O serviço não respondeu à solicitação de início ou controle em tempo hábil

2

Eu pesquisei mas não encontrei resposta apropriada, então eu criei minha própria pergunta. Temos alguns servidores Windows 2003 SP2, cada um executando serviços .NET lançados a partir do compartilhamento de máquina local e do Windows. Mas, na segunda vez, recebemos um erro: Erro 1053: O serviço não respondeu à solicitação de início ou controle em tempo hábil ao tentar reiniciar os serviços em um servidor específico, o segundo funciona como deveria. Compartilhar com o executável está disponível, abre normalmente, tem permissões corretas. Então, tudo parece o mesmo em ambos os servidores, mas um dá esses erros a todos os serviços que lançamos. Se reiniciarmos esse servidor, ele está funcionando bem por alguns dias ou uma semana e, em seguida, ele começa novamente.

Alguém tem sugestões, o que pode ser isso?

    
por elgato 26.11.2012 / 15:45

2 respostas

1

Existe um hotfix disponível da Microsoft

link

This problem occurs because the Iisutil.dll DLL adds an access control entry (ACE) to the desktop security descriptor for the services that run in the system context. The ACE lets the Microsoft Internet Information Services Worker Process Group (IIS_WPG) account log on to the system service desktop. However, if another process sets the desktop security descriptor for the services that run in the system context to a null value, Iisutil.dll changes the discretionary access control list (DACL). Iisutil.dll changes the DACL list so that any service that uses the noninteractive local system account cannot log on.

    
por 26.11.2012 / 16:31
1

Anyone have suggestions what can that be?

Não é o que você quer ouvir, mas pode ser quase qualquer coisa. No momento, tudo que você realmente sabe é que o serviço às vezes demora muito para a inicialização ou o desligamento.

Você realmente precisa voltar para quem desenvolveu os serviços do .Net para ver se eles podem ajudar você a diagnosticar o problema.

Mas antes disso eu recomendaria que, em vez de usar o reinício, você tentasse parar e iniciar o serviço como duas ações distintas (com um pequeno intervalo entre elas). Isso pode ajudar a determinar se o problema é ao desligar o serviço ou ao iniciar o backup. Eles também podem achar útil se você puder determinar por quanto tempo um início e uma parada bem-sucedidos ocorrerão.

Você também deve verificar o log de eventos para ver se alguma outra informação está registrada.

Quando um serviço é iniciado, a fase de inicialização inicial deve estar concluída dentro de um tempo específico (normalmente 30 segundos). Portanto, um serviço normalmente tentaria manter a quantidade de código nesta seção no mínimo e iniciar um thread de segundo plano para executar o restante do trabalho.

Da mesma forma, quando você para um serviço, ele deve concluir esse processo dentro de um tempo específico (normalmente 20 segundos). Isso significa que qualquer operação de longa duração deve ser gravada de forma que possa ser cancelada se o serviço estiver sendo encerrado, em vez de aguardar até que a operação seja concluída.

Tudo o que fizer com que o período total de inicialização ou desligamento exceda o limite causará o erro que você está vendo.

Para dar alguns exemplos que podem causar o erro. Suponha que na inicialização, seu serviço esteja realizando uma pesquisa de DNS para um nome de computador / servidor. Isso normalmente levaria milissegundos, mas se o DNS estiver configurado incorretamente no servidor, isso pode levar 15 segundos ou mais para ser concluído, o que talvez seja suficiente para levar o tempo total para a inicialização acima do limite. A segunda tentativa pode ter a entrada DNS armazenada em cache e, portanto, funcionar dentro do limite de tempo adequado.

Outra possibilidade é que o serviço esteja contando com um dispositivo ou recurso que foi suspenso e o tempo necessário para ativá-lo está ultrapassando o limite. Quando você tenta o serviço pela segunda vez, o dispositivo já está acordado e responde em tempo hábil.

Se os serviços do .Net forem amplamente utilizados, você poderá ter sorte e descobrir que alguém na Internet teve um problema semelhante e encontrou uma solução. Mas a causa real depende muito do que o serviço está realmente fazendo quando você está inicializando e desligando, e é por isso que seria melhor conversar com os desenvolvedores.

    
por 27.11.2012 / 21:40