I servizi di Windows non si avviano automaticamente dopo il riavvio?


10

Abbiamo alcuni servizi di Windows scritti in .NET. Iniziano bene manualmente all'interno dei servizi mmc, ma nonostante siano impostati su Automatico, non si avviano mai quando si accende (o si riavvia) la macchina.

Aggiornamento Nel registro eventi, invece di vedere "xyz avviato", accanto a tutti gli altri servizi che iniziano, vedo solo "Il servizio xyz è entrato nello stato di arresto". e un errore separato che dice "È stato raggiunto un timeout (30000 millisecondi) durante l'attesa di una risposta della transazione dal servizio slsvc".

Se li avvio manualmente, ottengo una voce normale nel registro eventi come previsto, e tutto va bene, fino alla prossima patch di Windows Update che forza un riavvio e tutti i servizi sono di nuovo disattivati.

Qualche idea? Ho provato a impostarli su Avvio ritardato senza alcuna differenza apparente.


Una volta ho avuto un problema molto simile con alcune attività pianificate, che alla fine ho scoperto di poter ricreare modificando il nome utente che l'attività ha eseguito come dopo che era stata creata. Ho scoperto che avrei potuto facilmente risolvere il problema semplicemente eliminando e ricreando le attività. Vale sicuramente la pena un approccio simile con questo: prova a rimuovere il servizio e ricrearlo. Questo può aiutare se non sei sicuro di come farlo. Cordiali saluti, il problema delle attività pianificate non si verifica più, immagino che qualche aggiornamento a un certo punto lo abbia risolto.
DaveRandom il

Mi chiedo se non riescono ad avviarsi perché dipendono da un altro servizio (che non è ancora stato avviato). Riesci a vedere un errore di avvio del servizio nel registro di sistema?
Newmanth,

@DaveRandom la reinstallazione avviene effettivamente ogni volta che distribuiamo una nuova versione, quindi non sembra che la rimozione / aggiunta risolva sfortunatamente il problema
James Crowley,

@newmanth domanda aggiornata con alcuni nuovi dettagli - risulta che c'erano voci nel registro degli eventi che avevo perso
James Crowley,

Ho notato nel tuo commento alla risposta di Rob che .NET è l'unica dipendenza. Sai se gli sviluppatori hanno utilizzato API di terze parti nello sviluppo del servizio? In tal caso, forse esiste qualche meccanismo di licenza che viene bloccato?
Newmanth,

Risposte:


3

C'è una soluzione per questo. Vedi: http://support.microsoft.com/kb/922918

Il fatto è che un servizio potrebbe richiedere ldap o un altro accesso remoto che potrebbe causare ritardi a causa di ciò. Ciò può accadere soprattutto all'avvio del server. Estendendo il ritardo è possibile garantire l'avvio del servizio.

Ovviamente sarebbe meglio risolvere il motivo per cui questo servizio impiega così tanto tempo per avviarsi. Il tuo ambiente non è dimensionato? Hai problemi di prestazioni su un servizio che viene sottoposto a polling dal servizio in ritardo all'avvio?


In che modo è possibile risolvere specificamente gli inizi del servizio? Esiste un modo per abilitare la registrazione dettagliata?
Kenny Evitt,

1

Cosa intendi quando dici "abbiamo alcuni servizi di Windows"? Ciò mi suggerisce che sono stati creati internamente da qualcuno all'interno della tua organizzazione? In tal caso, sei in una posizione migliore per eseguirne il debug rispetto a chiunque altro qui: quali dipendenze hanno questi servizi sui componenti di Windows e i tuoi programmatori sono considerati test per la disponibilità di questi servizi e in attesa che vengano messi online quando i tuoi servizi iniziano ?

Hai considerato l'impostazione di questi servizi come una dipendenza del servizio di licenze software (ecco cos'è slsvc )?

da http://support.microsoft.com/kb/193888

Per creare una nuova dipendenza, selezionare la sottochiave che rappresenta il servizio che si desidera ritardare, fare clic su Modifica, quindi su Aggiungi valore. Creare un nuovo nome valore "DependOnService" (senza virgolette) con un tipo di dati di REG_MULTI_SZ, quindi fare clic su OK. Quando viene visualizzata la finestra di dialogo Dati, digitare il nome o i nomi dei servizi che si preferisce avviare prima di questo servizio con una voce per ogni riga, quindi fare clic su OK.

Il nome del servizio da inserire nella finestra di dialogo Dati è il nome esatto del servizio come appare nel registro sotto la chiave Servizi.

All'avvio del computer, utilizza questa voce per verificare che il servizio oi servizi elencati in questo valore vengano avviati prima di tentare di avviare il servizio dipendente.


Grazie Rob - sono interni - ma l'unica dipendenza è il framework .NET, che non credo funzioni come servizio. Non richiede nient'altro all'avvio ...
James Crowley,

0

Prova con questo:

Eseguire il comando seguente per definire un evento trigger adatto al proprio ambiente. In questo esempio, il comando determina se un indirizzo IP viene assegnato a un host, quindi avvia o arresta il servizio.

sc triggerinfo w32time start / networkon stop / networkoff

dove w32Time è il nome del tuo servizio

o prova questo

https://support.microsoft.com/en-us/kb/922918

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.