Как работает настройка счетчика ошибок сброса службы Windows
Для тестирования у меня есть служба Windows, которую я хотел бы перезапустить через 1 с после первой и через 5 с после второй ошибки. Каждый последующий сбой в течение 2 минут должен оставлять сервис остановленным. Чтобы выполнить этот критерий, я попытался использовать конфигурацию "Сброс счетчика ошибок после", но безуспешно. На моей машине (Windows7 Enterpise x64) я создал простой сервис, который неожиданно закрывается через 5 секунд после запуска. С конфигурацией:
sc failure FAIL1 reset= 120 actions= restart/1000/restart/5000//
Я ожидал, что после этих 2 минут счетчик сбоя службы будет сброшен, и последовательность перезапуска повторяется. Но, возможно, если после второго сбоя служба остается в остановленном состоянии, у нее никогда не будет возможности сбросить счетчик. Итак, у меня есть другой сервис с конфигурацией:
sc failure FAIL2 reset= 120 actions= restart/1000/restart/5000
Оказывается, что служба FAIL2 после второго сбоя продолжает перезапускаться в течение 5 с, а доступный счетчик сброса в сообщениях об ошибках журнала событий продолжает расти.
Используя третий сервис (FAIL3) Я попытался настроить параметры simlar, используя доступное разрешение на вкладке Восстановление свойств сервиса:
- Первый сбой: перезапустить
- Второй сбой: перезапустить
- Последующее: не предпринимать никаких действий
- Сброс счетчика ошибок после: 1 (день)
- Перезапустите сервис после: 0 (минута)
Этот ведет себя подобно FAIL1. Выполняется дважды и через один день останавливается.
Похоже, на моей машине сброс счетчика не работает. Может быть, моя воображаемая конфигурация не может быть достигнута с помощью этой техники. Или, возможно, мое понимание сброса счетчика неверно.
1 ответ
Мое понимание счетчика службы Windows было совершенно неправильно. Самое главное здесь:
Сбросить счетчик ошибок после установки - это время от начала обслуживания, после которого счетчик ошибок будет сброшен.
В соответствии с определенными примерами конфигураций, когда каждая служба неожиданно закрывается через 5 с после запуска, каждый случай никогда не достигает определения счетчика сброса. Для сброса счетчика тайм-аут должен быть менее 5 с.
sc failure FAIL1 reset= 3 actions= restart/1000/restart/5000/restart/10000
В результате мы имеем сервис, который постоянно перезапускается через 1 с, и каждое сообщение об ошибке журнала событий содержит информацию:
Это было сделано 1 раз (а)
Идея, когда из-за двух сбоев в работе сервис должен быть остановлен в течение 2 минут, невозможна. Все, что мы можем сделать, это установить счетчик сброса дольше, чем 5 с, и каждый последующий сбой для повторного запуска через 2 минуты
sc failure FAIL1 reset= 10 actions= restart/1000/restart/5000/restart/1200000