Остановка службы 1С #718686


#0 by Stavral
Заметил такую странную штуку: частенько при перезапуске службы агента 1С после остановки она не стазу дает себя запустить. Т.е. нажимаешь "Запустить" - служба повисит активной секунды две и опять отрубится. И так до пяти раз. В чем тут дело? Надо ждать какое-то время, прежде чем пытаться ее запустить?
#1 by DrZombi
А ты не теребонкай :) Если ты стартуешь сервак, чего ты так спешишь? Все ровно все кто был отпали тут же :)
#2 by zulu_mix
смотри службы от которых зависит сервер 1с. пока они не запустятся - сервер не стартанет
#3 by tdm
стоит только одна версия сервера 1С ? (или несколько 8.1,8.2,8.3) из памяти все рабочие процессы успевают выгрузиться или вы просто по наитию стоп/старт жмёте ?
#4 by tdm
>>А ты не теребонкай :) +1, =)))
#5 by tdm
+ забыл написать - виндовый журнал посмотрите, как минимум событие падения службы и описание должно быть
#6 by John83
на 8.2 не отпадают
#7 by etc
Иногда возможно менеджер кластера подвисает и не сразу стопорится. Поскольку единственный порт занят новый не запускается. Как правило еще и некторые раб. процессы висят. Это из моих наблюдений.
#8 by etc
при нормальном рестарте сесси не отваливаются. Соответственно например если подвис менеджер регл. заданий можно рестартануть службу и никто не заметит. Ну разве что замрет клиент секунд на пять - десять
#9 by ptiz
Запускай только после того, как увидишь в диспетчере задач, что все старые процессы погасились.
#10 by Stavral
Версия стоит одна. Дело в том, что я не могу визуально наблюдать выгрузку процессов, т.к. службу перезапускает скрипт в 5 часов утра. Просто у нас сервера обновляются ночью, машины перезагружаются и служба не стартует сама после этого. Т.ч. скрипт проверяет ее статус и запускает/перезапускает. Но, как видно, не всегда срабатывает, т.к. сегодня утром служба была отключена. Судя по логам скрипта - он ее запустил в 5 утра. Но, видимо, после этого она опять отрубилась. В общем, как я понял, надо выставить таймаут побольше, чтобы дать службе время до конца остановиться.
#11 by 13_Mult
+ 1 не теребонькать ))
#12 by Chuper_IT
может скрипт покажешь?
#13 by DrZombi
Как так, куда же они денутся?
#14 by DrZombi
Сомневаюсь, я в этом успехе. А что будет с теми, кто запускал в этот момент мего отчет на 30 минут? :)
#15 by DrZombi
Дак у тебя еще все проще, сделай паузу по скрипту на минутку
#16 by DrZombi
+ А то чувство, что ты хочешь как у этого "Без разрывов 2 года, и кайф обламывают" :)
#17 by Stavral
@Echo Off Set logfile="C:1C eStart1C.log" Set ServiceName="1C:Enterprise 8.3 Server Agent (x86-64)" Echo ---->>%logfile% rem checking 1C agent status SC query %ServiceName%|Find /i "RUNNING">nul rem if the service is running - restart it if "%ERRORLEVEL%"=="0" (         echo %serviceName% is running>>%logfile%     SC stop %ServiceName%>nul     timeout 10 /nobreak>nul     SC start %ServiceName%>nul     echo %serviceName% restarted at: %date%, %time%>>%logfile% rem if the service is NOT running - start it ) else (         echo %serviceName% is NOT running>>%logfile%     SC start %ServiceName%>nul     echo %serviceName% started at: %date%, %time%>>%logfile% ) Exit
#18 by Stavral
Вчера поставил таймаут на минуту, пока что все хорошо Служба стартанула :)
#19 by ptiz
У нас несколько минут стоит между остановкой и запуском.
#20 by etc
держи мой вариант скрипта (vbs): Преймущество в том что в нем не жесткий таймаут а ожидание пока остановится служба. stComputer = "localhost" stService = "" stScriptName = wscript.ScriptName ' Соберем параметры командной строки set argn = wscript.arguments.named set arg = wscript.arguments.unnamed if argn.exists("c") then    stComputer = argn.item("c") end if if arg.count >= 1 then    stService = arg.item else    wscript.echo "Использование:" & vbcrlf & _                 "   " & stScriptName & " /c:<имя компьютера> <имя службы>" & vbcrlf & _                 vbcrlf & _                 "Если <имя компьютера> не указано то используется localhost." & vbcrlf    wscript.quit end if ' Попробуем найти сервис и рестартануть его. ' Если сервис уже был остановлен то просто запустим его set objLocator = CreateObject("WbemScripting.SWbemLocator") set objConn = objLocator.ConnectServer(stComputer,"rootcimv2") on error resume next    set svc = objConn.Get("Win32_Service.Name='" & stService & "'")    if err.number<>0 then       wscript.echo "Служба " & stService & " не найдена на " & stComputer       wscript.quit    end if on error goto 0 wscript.echo "Перезапуск службы " & stService & " на " & stComputer if svc.Started then    svc.StopService    ' ждем пока служба остановится но не более 300 секунд    k=1    Do       WScript.Sleep 2000       State = objConn.Get("Win32_Service.Name='" & stService & "'").State       k=k+1    Loop Until (State="Stopped" or k>150)    if State<>"Stopped" then       wscript.echo "Не удалось остановить службу " & stService & " на " & stComputer       wscript.quit    end if end if svc.StartService WScript.Sleep 5000 ' Проверим запустился ли сервис set svc = objConn.Get("Win32_Service.Name='" & stService & "'") if not svc.Started then    wscript.echo "Не удалось запустить службу " & svc.Name & " на " & stComputer    wscript.quit end if
#21 by Stavral
Спасибо, чуть позже посмотрю =)
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С