Конференция "WinAPI" » Как увеличить тайм-аут запуска сервиса
 
  • Дмитрий Белькевич (24.08.11 13:47) [0]
    Есть необходимость увеличить время ожидания ответа сервиса. Сервис может стартовать до двух минут, Windows ждет, как я понял, 30 секунд. Сервис не успевает полностью запуститься и начать отвечать на сообщения (есть необходимость в initialization выполнять медленную процедуру). Windows убивает сервис раньше, чем он успевает запуститься.

    Не хотелось бы лезть в глобальные настройки Windows. Можно ли как-то увеличить время для конкретного сервиса?
  • Дмитрий Белькевич (24.08.11 14:02) [1]
    Нашел вот такое:

    1. Нажмите Пуск, Выполнить, наберите regedit  и нажмите ОК

    2. Перейдите в реестре к HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control

    3. Правой клавишей мыши щёлкните на параметре ServicesPipeTimeout и выберете Изменить. Если параметр отсутствует, то Вам нужно создать параметр ServicesPipeTimeout, тип DWORD Value

    4. Введите в десятичном формате значение 60000 (по умолчанию 30000) - это тайм-аут запуска службы в миллисекундах. Нажмите ОК

    есть какой-то другой вариант? Не хочу лезть в глобальные настройки.
  • Sha © (24.08.11 14:08) [2]
    > есть необходимость в initialization выполнять медленную процедуру
    > есть какой-то другой вариант?

    в initialization не выполняй медленную процедуру
  • Игорь Шевченко © (24.08.11 14:24) [3]

    > Можно ли как-то увеличить время для конкретного сервиса?


    http://rsdn.ru/article/baseserv/svcadmin-1.xml
    http://rsdn.ru/article/baseserv/svcadmin-2.xml
  • Дмитрий Белькевич (24.08.11 17:00) [4]
    Спасибо, посмотрю.
  • Rouse_ © (24.08.11 20:12) [5]
    на SERVICE_START_PENDING выставляй нужное dwCheckPoint и dwWaitHint
  • sniknik © (24.08.11 21:25) [6]
    > есть какой-то другой вариант?
    вынести работу сервиса в свой поток, а основной поток сервиса оставить на общение с сервис менеджером.
  • Rouse_ © (24.08.11 21:43) [7]

    > sniknik ©   (24.08.11 21:25) [6]
    > вынести работу сервиса в свой поток, а основной поток сервиса
    > оставить на общение с сервис менеджером.

    а это кстати плохой подход, ибо вводит пользователя в заблуждение, сервис вроде как работает - но реально не работает...
  • Дмитрий Белькевич (24.08.11 21:54) [8]

    > вводит пользователя в заблуждение


    Причем пользователем могут быть зависимые службы.
  • Дмитрий Белькевич (24.08.11 22:07) [9]

    > на SERVICE_START_PENDING выставляй нужное dwCheckPoint и
    > dwWaitHint


    Спасибо, судя по описанию то, что нужно, буду разбираться.
  • DVM © (24.08.11 22:11) [10]

    > Дмитрий Белькевич   (24.08.11 22:07) [9]

    Сервис не VCL? VCL сервис сам SERVICE_START_PENDING отрабатывает правильно. Есть ли смысл городить самопальную реализацию?
  • Дмитрий Белькевич (24.08.11 23:02) [11]
    VCL. Только всё хуже. Основная задержка на старте находится в секции initialization одного из модулей. То есть еще до создания TService.
 
Конференция "WinAPI" » Как увеличить тайм-аут запуска сервиса
Есть новые Нет новых   [134431   +10][b:0][p:0]