Usługi Windows nie uruchamiają się automatycznie po ponownym uruchomieniu?

10

Mamy kilka usług Windows napisanych w .NET. Zaczynają dobrze ręcznie w ramach usług mmc, ale pomimo ustawienia na Automatyczny, nigdy nie uruchamiają się po włączeniu (lub ponownym uruchomieniu) maszyny.

Aktualizacja W dzienniku zdarzeń, zamiast „Xyz start”, obok wszystkich innych usług, po prostu widzę „Usługa Xyz weszła w stan zatrzymania”. oraz oddzielny błąd z informacją: „Osiągnięto limit czasu (30000 milisekund) podczas oczekiwania na odpowiedź transakcji z usługi slsvc.”.

Jeśli ręcznie je uruchomię, otrzymam normalny wpis w dzienniku zdarzeń, zgodnie z oczekiwaniami, i wszystko jest w porządku - do następnej poprawki Windows Update, która wymusza ponowne uruchomienie i wszystkie usługi są ponownie wyłączone.

Jakieś pomysły? Próbowałem ustawić je na Opóźniony start bez widocznej różnicy.

James Crowley
źródło
Kiedyś miałem bardzo podobny problem z niektórymi zaplanowanymi zadaniami, które w końcu odkryłem, że mogę je odtworzyć, zmieniając nazwę użytkownika uruchamianego zadania po jego utworzeniu. Odkryłem, że mogę łatwo rozwiązać problem, po prostu usuwając i ponownie tworząc zadania. Zdecydowanie warte jest podobne podejście - spróbuj usunąć usługę i ponownie ją utworzyć. Może to pomóc, jeśli nie wiesz, jak to zrobić. Do Twojej wiadomości, problem z zaplanowanymi zadaniami już się nie zdarza, myślę, że jakaś aktualizacja w pewnym momencie go rozwiązała.
DaveRandom
Zastanawiam się, czy się nie uruchamiają, ponieważ są zależne od innej usługi (która jeszcze się nie rozpoczęła). Czy widzisz awarię uruchamiania usługi w dzienniku systemowym?
newmanth
@DaveRandom ponowna instalacja odbywa się za każdym razem, gdy wdrażamy nową wersję, więc nie wydaje się, że usunięcie / dodanie rozwiązuje problem niestety
James Crowley,
Pytanie @newmanth zaktualizowane o nowe szczegóły - okazuje się, że wpisy w dzienniku zdarzeń, które przegapiłem
James Crowley,
Zauważyłem w twoim komentarzu do odpowiedzi Roba, że ​​.NET jest jedyną zależnością. Czy wiesz, czy programiści korzystali z interfejsów API innych firm podczas opracowywania usługi? Jeśli tak, to może istnieje jakiś mechanizm licencyjny, który jest blokowany?
newmanth

Odpowiedzi:

3

Jest na to poprawka. Zobacz: http://support.microsoft.com/kb/922918

Chodzi o to, że usługa może wymagać ldap lub innego zdalnego dostępu z powodu opóźnień. Może się to szczególnie zdarzyć podczas uruchamiania serwera. Wydłużając opóźnienie możesz zapewnić uruchomienie usługi.

Lepiej byłoby oczywiście rozwiązać problemy z uruchomieniem tej usługi. Czy twoje środowisko jest niewymiarowe? Czy masz problemy z wydajnością usługi, która jest odpytywana przez usługę opóźnioną do uruchomienia?

David Biot
źródło
Jak konkretnie można rozwiązywać problemy z uruchomieniem usługi? Czy jest jakiś sposób na włączenie szczegółowego rejestrowania?
Kenny Evitt
1

Co masz na myśli mówiąc „mamy pewne usługi Windows”? To sugeruje mi, że są tworzone wewnętrznie przez kogoś w Twojej organizacji? Jeśli tak, to jesteś w lepszej pozycji do debugowania ich niż ktokolwiek tutaj - jakie zależności mają te usługi od składników systemu Windows i czy programiści rozważają przetestowanie dostępności tych usług i czekają, aż pojawią się one w trybie online po uruchomieniu usług ?

Czy zastanawiałeś się nad ustawieniem tych usług jako zależności od usługi licencjonowania oprogramowania (to właśnie jest slsvc )?

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

Aby utworzyć nową zależność, wybierz podklucz reprezentujący usługę, którą chcesz opóźnić, kliknij Edytuj, a następnie kliknij Dodaj wartość. Utwórz nową nazwę wartości „DependOnService” (bez znaków cudzysłowu) z typem danych REG_MULTI_SZ, a następnie kliknij przycisk OK. Gdy pojawi się okno dialogowe Dane, wpisz nazwę lub nazwy usług, które wolisz uruchomić przed tą usługą, z jedną pozycją dla każdej linii, a następnie kliknij OK.

Nazwa usługi, którą wprowadziłbyś w oknie dialogowym Dane, to dokładna nazwa usługi wyświetlana w rejestrze pod kluczem Usługi.

Podczas uruchamiania komputer używa tego wpisu do sprawdzenia, czy usługa lub usługi wymienione w tej wartości są uruchomione przed próbą uruchomienia usługi zależnej.

Rob Moir
źródło
Dzięki, Rob - są wewnętrzne - ale jedyną zależnością jest platforma .NET, która, jak sądzę, nie działa jako usługa. Nie wymaga niczego więcej przy starcie ...
James Crowley
0

Spróbuj tego:

Uruchom następującą komendę, aby zdefiniować zdarzenie wyzwalające, które pasuje do twojego środowiska. W tym przykładzie polecenie określa, czy adres IP jest podawany hostowi, a następnie uruchamia lub zatrzymuje usługę.

sc triggerinfo w32time start / networkon stop / networkoff

gdzie w32Time jest nazwą twojej usługi

lub spróbuj tego

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

Fernando Diaz Toledano
źródło