5

Mam kilka aplikacji konsolowych zainstalowanych jako usługi działające pod górną półką i jeśli zainstaluję je i uruchomię ręcznie, będą działały poprawnie. Jednak żaden z nich nie uruchamia się automatycznie, mimo że typ uruchomienia jest ustawiony na Automatyczny.Usługi automatyczne nie są uruchamiane

Aplikacje są skonfigurowane następująco:

HostFactory.Run(x => 
{ 
    x.Service<MyApp>(s => 
    { 
     s.ConstructUsing(name => container.Resolve<MyApp>()); 
     s.WhenStarted(tc => tc.Start()); 
     s.WhenStopped(tc => 
     { 
      tc.Stop(); 
      container.Dispose(); 
     }); 
    }); 

    x.RunAsLocalSystem(); 
    x.StartAutomatically(); 
    x.EnableServiceRecovery(rc => rc.RestartService(5)); 
}); 

Aplikacje uruchamiane pod Win 2008 R2 i są instalowane przy użyciu pliku wsadowego wykonywane jako Admin. Plik wsadowy obejmuje:

app.exe install --sudo 
app.exe start 

Po uruchomieniu pliku partia usługi działają zgodnie z oczekiwaniami. Jednak jeśli uruchomię się ponownie, pozostaną zatrzymane.

Dziennik zdarzeń zwraca taką samą parę zdarzeń dla każdej usługi:

Event 7000: The service failed to start due to the following error: The service did not respond to the start or control request in a timely fashion.

Event 7009: A timeout was reached (30000 milliseconds) while waiting for the service to connect.

Jedynym sposobem, aby uruchomić aplikację po restarcie jest uruchomienie app.exe start z wiersza polecenia.

Wszelkie pomysły?

Odpowiedz

4

OK, naprawiłem to. Typy uruchamiania usługi zostały ustawione na Automatyczne, ale zmieniłem je na Automatyczne (Opóźnione) i wszystkie teraz działają poprawnie przy uruchomieniu.

Również I zostały zmodyfikowane instalację plików wsadowych do wykorzystania w przyszłości:

app.exe install --delayed --sudo 
app.exe start 

tylko przypuszczenie, ale prawdopodobnie zależne od usług sieciowych, które mogą nie być dostępne.

+0

Właśnie uratowałeś mi 100 lat kopania w śmieciach informacji :) – alerya

2

Najbardziej prawdopodobną odpowiedzią jest to, że utworzenie kontenera i jego rozwiązanie podczas uruchamiania, gdy inne rzeczy są wykonywane na komputerze, trwa zbyt długo. Kiedy robisz to ręcznie, nic innego nie rywalizuje o zasoby. Czy możesz odroczyć część pracy wykonanej w twoim kontenerze, aż do momentu rozpoczęcia tworzenia &? Możesz także poprosić o więcej czasu, ale nie przypominam sobie, że API jest poza moją głową.

+0

Dobrze, może być wysokie obciążenie procesora, ponieważ każda aplikacja przetwarza kolejkę w usłudze Amazon SQS. Po uruchomieniu usługa sprawdza kolejkę, pobiera niektóre obiekty z S3, przetwarza je, przesyła z powrotem do S3 i zapisuje nową wiadomość kolejki. Chociaż mamy do czynienia tylko z kilkadziesiąt wiadomości na godzinę, są one bardzo lekkie na zasoby procesora. Ale maszyna jest instancją EC2 micro i prawdopodobnie skok może spowodować awarię wszystkich 6 usług ... chociaż nie jestem do końca przekonany, że to jest powód. Spróbuję wyłączyć wszystkie oprócz jednego i sprawdzić, czy mogę uruchomić automatyczne uruchamianie. –

+0

Wciąż nie ma radości. Wziąłem nowy zapas win2012 vm i zainstalowałem pojedynczą usługę i przetestowałem jej działanie. Po ponownym uruchomieniu pozostaje zatrzymany, a dziennik zdarzeń pokazuje powyższy błąd. Jeśli ręcznie uruchomić usługę do uruchomienia natychmiast. –

+0

Jeśli możesz utworzyć prostą reprodukcję i przenieść ją na listę mailingową (https://groups.google.com/forum/?fromgroups#!forum/topshelf-discuss), to może pomożemy Ci jeszcze bardziej. Objaw ten wciąż ma ten sam problem, trwa zbyt długo podczas uruchamiania. Tak więc odpowiedź jest jakoś opóźniona, co trwa zbyt długo podczas uruchamiania, ale nie później. – Travis

Powiązane problemy