Служба Windows не запускается автоматически, если виртуальный сервер запускается из деинициализированного состояния

У меня есть серверное приложение, работающее на виртуальной машине, размещенной в Azure. Это приложение состоит из четырех служб Windows.

Каждую ночь я выключаю (деинициализирую) виртуальную машину.

Когда я перезагружаю машину, одна из четырех служб не запускается. Обычно это один и тот же.

Если я перезагружу машину, запустятся все четыре службы. Если я остановлю машину (оставив ее подготовленной), а затем запустил ее снова, запустятся все четыре службы. Служба не запускается только тогда, когда машина запускается из деинициализированного запуска.

Я смотрю в журналы событий и вижу следующую ошибку:

Истекло время ожидания (30000 миллисекунд) при ожидании завершения службы. connect

Я попытался настроить параметры службы Recovery таким образом, чтобы она перезапускала службу после сбоя, с отметкой Включить действия для остановок с ошибками: отмечен галочкой. Это не имеет никакого эффекта.

Мой служебный код - это приложение .NET. Я реализовал ведение журнала и записал его в файл, как только он запустится. Когда он не запускается, записи в журнал не записываются. Как будто приложение полностью не загружается.

Есть ли рекомендуемый способ решения этой проблемы? (т.е. чтобы диагностировать основную причину и предотвратить ее возникновение).

1
задан 12 October 2018 в 09:49
1 ответ

Установите тип запуска службы как «Автоматический (отложенный запуск)». Поскольку служба запускает .Net и ничего не регистрирует в течение 30-секундного тайм-аута, ясно указывает, что сборки .Net не загрузились вовремя (холодный старт). К сожалению, у вас нет контроля над этим, поэтому лучше всего отложить его запуск. У меня всегда работал!

3
ответ дан 3 December 2019 в 18:26

Теги

Похожие вопросы