ещё раз про утилиту контроля зависания

Вопросы, проблемы, решения с помощью Sound Empire.

Модераторы: Dark-Horse, Wlad, 7radio

ещё раз про утилиту контроля зависания

Сообщение Максим » Чт янв 13, 2011 11:48 am

Летом 2009 на форуме просили написать Вас Влад утилитку по контролю зависаний программы.
Всего всё равно не предусмотреть... всё равно зависания будут. Когда днём, это ещё ладно... тот, кто рядом услышит и перезапустит. А вот как быть ночью и вообще когда на радио никого нет?
Действительно нужна такая опция... 10 сек молчания и происходит перезапуск Империи. И даже не страшно , что плей лист будет звучать с начала часа. Тишина в эфире гораздо страшнее.
Может быть и не нужно привязывать этот скрипт к программе вещания?
может просто как-то контролировать выходящий звуковой поток...
Максим
Новичок
 
Сообщений: 40
Зарегистрирован: Чт сен 20, 2007 7:03 pm
Откуда: Владимир

Сообщение Ed » Чт янв 13, 2011 4:38 pm

я в свое время писал вот такой скриптик, но наделе я его так и не испробовал, отпала потребность.
запускать его через планировщик заданий.
в тестовом режиме он отлично отрабатывал,
при зависании студии или песни происходил рестарт студии (правда убивается студия не корректно, а тупо грохается процес)
script.vbs
Код: выделить все
Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject")
Set objShell = Wscript.CreateObject("Wscript.Shell")

Function ProcessClose(ProcessName)
    Set Processes = GetObject("winmgmts://localhost")
    Set myProcEnum = Processes.ExecQuery("select * from Win32_Process")
    For Each Proc In myProcEnum
        If StrComp(Proc.Name, ProcessName, 1) = 0 Or StrComp(Proc.ProcessID, ProcessName, 1) = 0 Then
            Proc.Terminate
        End If
    Next
End Function

Set objTextFile = objFSO.OpenTextFile("C:\Program Files\Sound Empire\status.txt", 1)
text1=objTextFile.ReadLine
text2=objTextFile.ReadLine
objTextFile.Close

Set objTextFileTemp = objFSO.OpenTextFile("C:\Program Files\Sound Empire\status.temp", 1)
temp1=objTextFileTemp.ReadLine
temp2=objTextFileTemp.ReadLine
objTextFileTemp.Close

if text1 = temp1 Then
rem WScript.Echo "Заивсла студия"
ProcessClose("SEStudio.EXE")
WScript.Sleep(500)
ObjShell.Run """C:\Program Files\Sound Empire\SEStudio.EXE""", 1 , True
Set objTextFile = objFSO.OpenTextFile("C:\Program Files\Sound Empire\error.txt", 8)
objTextFile.Write Now
objTextFile.Write " Зависла студия " & vbLf
objTextFile.Close



ElseIf (text2 = temp2) And (text2 <> "00:00") Then
rem WScript.Echo "Заивсла песня"
ProcessClose("SEStudio.EXE")
WScript.Sleep(500)
ObjShell.Run """C:\Program Files\Sound Empire\status\SEStudio.EXE""", 1 , True
Set objTextFile = objFSO.OpenTextFile("C:\Program Files\Sound Empire\error.txt", 8)
objTextFile.Write Now
objTextFile.Write " Зависла gtcyz " & vbLf
objTextFile.Close

Else
rem WScript.Echo Now
End If

Set objTextFile = objFSO.OpenTextFile("C:\Program Files\Sound Empire\status.temp", 2)
objTextFile.Writeline text1
objTextFile.Writeline text2
objTextFile.Close



настройки
Изображение

Studio2.html
Код: выделить все
!SE!CurrentTime
!SE!SongTimeA
Кто ищет тот всегда найдёт !
Сисадмины делятся на тех, кто не делает бэкапы, и тех кто, их уже делает =)
Аватар пользователя
Ed
Гуру
 
Сообщений: 198
Зарегистрирован: Вс янв 20, 2008 11:52 am
Откуда: Первомайск Луганская обл.

Сообщение Максим » Чт янв 13, 2011 5:53 pm

Спасибо. я не программист, но покажу это умным людям, которые надеюсь пропробуют прописать сей скрипт в комп. Хотелось всё-таки и Влада послушать, что он скажет по этому поводу.
Максим
Новичок
 
Сообщений: 40
Зарегистрирован: Чт сен 20, 2007 7:03 pm
Откуда: Владимир

Сообщение Максим » Пн янв 17, 2011 1:31 pm

Нам не удалось понять как работает этот скрипт, требуется подробное разъяснение к нему, к примеру при попытке запуска выдал ошибку, что строка 15 символ 1 ошибка: вывод данных за пределами файла.

Если вам не сложно напишите подробную инструкцию к применению.
Максим
Новичок
 
Сообщений: 40
Зарегистрирован: Чт сен 20, 2007 7:03 pm
Откуда: Владимир

Сообщение Ed » Пн янв 17, 2011 2:16 pm

1) создать\изменить c:\Program Files\Sound Empire\Studio2.html
Код: выделить все
!SE!CurrentTime
!SE!SongTimeA

2)включить шаблон в настройках студии и указать путь
Код: выделить все
C:\Program Files\Sound Empire\status.txt

3) проверить что файл status.txt изменяется
4) создать файл C:\Program Files\Sound Empire\status.temp
открыть файл и написать в нем две строки ( к примеру 0 и 0)
5)скрипт положить в C:\Program Files\Sound Empire\
6)проверить работоспособность
запускаем скрипт, если ошибок нет, значит он отработал благополучно
закрываем студию и два раза запускаем скрипт, после второго
запуска студия должна запуститься
7)настраиваем планировщик заданий на запуск этого скрипта, к примеру, каждые 5 мин

PS скрипт писался исключительно для себя, поэтому никаких удобств по инсталляции и использованию...

PSPS чесно говоря я уже давно не вижу в этом потребности, у меня программа не виснит если товарищи пользователи выполняют данные им инструкции, а с другой стороны я бы тоже не отказался чтоб такой функционал изначально присутствовал в программе, раз в год и палка стреляет, в чем я и убился на рождество в 4 утра :(
Кто ищет тот всегда найдёт !
Сисадмины делятся на тех, кто не делает бэкапы, и тех кто, их уже делает =)
Аватар пользователя
Ed
Гуру
 
Сообщений: 198
Зарегистрирован: Вс янв 20, 2008 11:52 am
Откуда: Первомайск Луганская обл.

Сообщение Ed » Вт мар 19, 2013 11:18 pm

доработано
https://docs.google.com/file/d/0B9d4QsQ ... sp=sharing
установка
1) распаковать архив на диск С (должно получиться c:\SE\)
2) скопировать из архива Studio2.html в папку c:\Program Files\Sound Empire\
3)открыть настройки студии->"HTML, RDS и ShoutCast", "Шаблон из файла Studio2.html" - прописать "C:\SE\status.txt"
4)настроить планировщик заданий windows на исполнение скрипта c:\SE\script.vbs с переодичностью которую считаете нужной.

Суть проста
студия пишет время в файл c:\SE\status.txt
скрипт сравнивает время записанное в файл c:\SE\status.txt с временем записанном в файле c:\SE\status.temp
если время не совпадает, значит студия работает и производиться копирование данных из файла c:\SE\status.txt в файл c:\SE\status.temp
при следующем запуске скрипта опять повторяем процедуру сравнения
если студия зависнет, то данные в обоих файлах будут одинаковы и скрипт жестко убьет процесс студии и заново запустит студию и сделает пометку в файле error.txt

в общем то это не решение проблемы, но я решился на такой костыль, т.к. надоело, что меня будят по ночам, уж не знаю почему стало периодически зависать студия, а самое плохое, что не нахожу причины :(
возможно пора менять эфирную машину :roll:
Кто ищет тот всегда найдёт !
Сисадмины делятся на тех, кто не делает бэкапы, и тех кто, их уже делает =)
Аватар пользователя
Ed
Гуру
 
Сообщений: 198
Зарегистрирован: Вс янв 20, 2008 11:52 am
Откуда: Первомайск Луганская обл.

Сообщение EliGh » Ср мар 20, 2013 7:39 am

Использую подобный механизм контроля, основанный на слежении за временем, выводимым Студией в файл.
К сожалению, уже несколько раз это не спасало. Студия висла, циклился влет в рекламу, но в файл продолжала писать правильное время!
Аватар пользователя
EliGh
Гуру
 
Сообщений: 296
Зарегистрирован: Ср сен 28, 2005 7:37 am
Откуда: Россия, Юг, Армавир

Сообщение Ed » Ср мар 20, 2013 3:35 pm

EliGh писал(а):Использую подобный механизм контроля, основанный на слежении за временем, выводимым Студией в файл.
К сожалению, уже несколько раз это не спасало. Студия висла, циклился влет в рекламу, но в файл продолжала писать правильное время!

в общем то это тоже можно проконтролировать, предыдущий скрипт контролировал и изменение времени трека, вот ток я не уверен, что корректно...
этот скрипт я упростил из-за возможных ситуаций по треку(вещание\ретрансляция, трек может быть и несколько секунд, а запуск скрипта раз в 5 минут)
в общем просто было лень :oops:

попаду в такую ситуацию- допишу скрипт :)
Кто ищет тот всегда найдёт !
Сисадмины делятся на тех, кто не делает бэкапы, и тех кто, их уже делает =)
Аватар пользователя
Ed
Гуру
 
Сообщений: 198
Зарегистрирован: Вс янв 20, 2008 11:52 am
Откуда: Первомайск Луганская обл.

Сообщение michaelpro » Ср мар 20, 2013 9:42 pm

3 года без остановочной работы SE на windows xp.
Ну как, без остановочной. Раз в пару недель перегружали. Теперь про зависание. Вначале начали ловить редкие остановки, потом зацикливание, потом уход в "белое" и программа не отвечала. Потом SE подвешивала весь Windows, проще было перегрузить кнопкой. Сразу скажу, дополнительного стороннего ПО или пользование интернетом на машине не наблюдалось - запрещено правами. Достало...

Не панацея, но нас спасло следующее: Переустановка Windows вернуло SE в тот первоначальный вид, как задумал её создатель :)
--
Звукорежиссер без бороды больше похож на DJ-я!
michaelpro
Новичок
 
Сообщений: 17
Зарегистрирован: Ср дек 19, 2012 8:35 am
Откуда: Москва

Сообщение Wlad » Ср мар 20, 2013 10:47 pm

И таки расскажите мне, как искать проблему, если вот так всё решается. :x
Люди редко добиваются успеха, если заняты тем, что не доставляет им удовольствия. /Дейл Карнеги/
Wlad
Site Admin
 
Сообщений: 2569
Зарегистрирован: Пт сен 23, 2005 2:02 pm
Откуда: Запорожье

Сообщение EliGh » Чт мар 21, 2013 7:27 am

Ed писал(а):
EliGh писал(а):Использую подобный механизм контроля, основанный на слежении за временем, выводимым Студией в файл.
К сожалению, уже несколько раз это не спасало. Студия висла, циклился влет в рекламу, но в файл продолжала писать правильное время!

в общем то это тоже можно проконтролировать, предыдущий скрипт контролировал и изменение времени трека, вот ток я не уверен, что корректно...
этот скрипт я упростил из-за возможных ситуаций по треку(вещание\ретрансляция, трек может быть и несколько секунд, а запуск скрипта раз в 5 минут)
в общем просто было лень :oops:

попаду в такую ситуацию- допишу скрипт :)


У нас ретрансляция и 90% времени Студия ничего не делает, а по опыту ее использования в ~10 лет знаю что зависнуть может в любой момент. Как и проработать несколько месяцев без сбоя :)
Проблема с зависаниями не формулируется каким-то понятным алгоритмом, который можно специально повторить и получить зависание. Тут как планеты встанут :)

Мое руководство своим волевым решением заставило раз в неделю по пятницам перезагружать все компы, хотя я был против :)
Аватар пользователя
EliGh
Гуру
 
Сообщений: 296
Зарегистрирован: Ср сен 28, 2005 7:37 am
Откуда: Россия, Юг, Армавир

Сообщение Ed » Чт мар 21, 2013 5:16 pm

Wlad писал(а):И таки расскажите мне, как искать проблему, если вот так всё решается. :x

совершенно верно :oops:
но лично я думаю, что в моем случае проблема не в SE, а в системе или железе...
у меня прикатились проблемы после покупки нового системника под эфир и установке 107 билда SE, т.е. абсолютно никаких проблем не было, сейчас системнику, в моем понимании, пора на пенсию, купить новый пока нет возможности, поэтому и катыль...
Кто ищет тот всегда найдёт !
Сисадмины делятся на тех, кто не делает бэкапы, и тех кто, их уже делает =)
Аватар пользователя
Ed
Гуру
 
Сообщений: 198
Зарегистрирован: Вс янв 20, 2008 11:52 am
Откуда: Первомайск Луганская обл.

Сообщение michaelpro » Пт мар 22, 2013 12:47 pm

Переставьте систему и "хватит лохматить бабушку" :)
Это проще, быстрее и надежнее.
--
Звукорежиссер без бороды больше похож на DJ-я!
michaelpro
Новичок
 
Сообщений: 17
Зарегистрирован: Ср дек 19, 2012 8:35 am
Откуда: Москва

Сообщение Ed » Пт мар 22, 2013 4:04 pm

как это мне такое в голову не приходило....
Кто ищет тот всегда найдёт !
Сисадмины делятся на тех, кто не делает бэкапы, и тех кто, их уже делает =)
Аватар пользователя
Ed
Гуру
 
Сообщений: 198
Зарегистрирован: Вс янв 20, 2008 11:52 am
Откуда: Первомайск Луганская обл.


Вернуться в Общий форум

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25

cron