Терминальная сессия зависает

285 views
Skip to first unread message

serge62

unread,
Jun 7, 2016, 1:21:26 AM6/7/16
to ClaList
Добрый день, коллеги!  ШВС 6.3

Есть программка. Раньше она стояла у каждого юзера и пользовалась данными на сервере. Потом для ускорения процесса поставили ее на терминальный сервер, там же и данные,;теперь юзеры запускают ее помощью RDP-файла. Когда надо обновить прогу, я захожу на сервер, в специальном файле устанавливаю флаг в единицу, а прога по таймеру в AppFrame раз в две минуты опрашивает этот флаг, и, если он 1, то вырубается. И я меняю экзешник. Но не раз так бывало, что фокус не срабатывает. У кого-то из юзеров прога висит и нихрена флаг не опрашивает. Приходится звонить сисадминам, чтобы вручную убили процесс, так как я таких прав не имею. Что очень неудобно. А вот вчера у одного пользователя сессия так загнулась, что программа ни на что не реагирует, перезагрузка не помогает, при попытке запустить прогу заново он попадает в ту же зависшую сессию, и сисадмины уже домой ушли. Поскольку все считают Кларион полной дичью, мне говорят, что вот, мол , нечего на говне писать. Вопрос - кто-нибудь сталкивался с такой проблемой (зависание терминальной сессии) и кто в этом виноват - сеть, сервер, Кларион, я, Путин? И что делать?

Владимир Урбанский

unread,
Jun 7, 2016, 1:39:28 AM6/7/16
to serge62
Добрый день!

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


Вы писали 7 июня 2016 г., 8:21:26:


Добрый день, коллеги!  ШВС 6.3

Есть программка. Раньше она стояла у каждого юзера и пользовалась данными на сервере. Потом для ускорения процесса поставили ее на терминальный сервер, там же и данные,;теперь юзеры запускают ее помощью RDP-файла. Когда надо обновить прогу, я захожу на сервер, в специальном файле устанавливаю флаг в единицу, а прога по таймеру в AppFrame раз в две минуты опрашивает этот флаг, и, если он 1, то вырубается. И я меняю экзешник. Но не раз так бывало, что фокус не срабатывает. У кого-то из юзеров прога висит и нихрена флаг не опрашивает. Приходится звонить сисадминам, чтобы вручную убили процесс, так как я таких прав не имею. Что очень неудобно. А вот вчера у одного пользователя сессия так загнулась, что программа ни на что не реагирует, перезагрузка не помогает, при попытке запустить прогу заново он попадает в ту же зависшую сессию, и сисадмины уже домой ушли. Поскольку все считают Кларион полной дичью, мне говорят, что вот, мол , нечего на говне писать. Вопрос - кто-нибудь сталкивался с такой проблемой (зависание терминальной сессии) и кто в этом виноват - сеть, сервер, Кларион, я, Путин? И что делать?




--
С уважением,
Владимир Урбанский                          
mailto:u...@tut.by
                                 

Вячеслав Черников

unread,
Jun 7, 2016, 1:45:51 AM6/7/16
to clalist
Добрый день.

Бывает такое. Приложение не активно. Причины не скажу. Стандартно в таких случаях используется менеджер терминальных подключений, там и скидываются проблемные сессии или приложения. 

7 июня 2016 г., 9:21 пользователь serge62 <pavle...@gmail.com> написал:
Добрый день, коллеги!  ШВС 6.3

Есть программка. Раньше она стояла у каждого юзера и пользовалась данными на сервере. Потом для ускорения процесса поставили ее на терминальный сервер, там же и данные,;теперь юзеры запускают ее помощью RDP-файла. Когда надо обновить прогу, я захожу на сервер, в специальном файле устанавливаю флаг в единицу, а прога по таймеру в AppFrame раз в две минуты опрашивает этот флаг, и, если он 1, то вырубается. И я меняю экзешник. Но не раз так бывало, что фокус не срабатывает. У кого-то из юзеров прога висит и нихрена флаг не опрашивает. Приходится звонить сисадминам, чтобы вручную убили процесс, так как я таких прав не имею. Что очень неудобно. А вот вчера у одного пользователя сессия так загнулась, что программа ни на что не реагирует, перезагрузка не помогает, при попытке запустить прогу заново он попадает в ту же зависшую сессию, и сисадмины уже домой ушли. Поскольку все считают Кларион полной дичью, мне говорят, что вот, мол , нечего на говне писать. Вопрос - кто-нибудь сталкивался с такой проблемой (зависание терминальной сессии) и кто в этом виноват - сеть, сервер, Кларион, я, Путин? И что делать?

--
Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

Вячеслав Черников

unread,
Jun 7, 2016, 1:48:47 AM6/7/16
to clalist
Аналогично можно и для dll делать.

7 июня 2016 г., 9:39 пользователь Владимир Урбанский <infob...@gmail.com> написал:

--

serge62

unread,
Jun 7, 2016, 2:40:06 AM6/7/16
to ClaList, u...@tut.by
C этого места поподробнее. Т.е. поверх писать не дает, а переименовать можно? Т.е. поступаем так - hosp.exe -> hospold.exe и пишем новый hosp.exe?  

вторник, 7 июня 2016 г., 15:39:28 UTC+10 пользователь Владимир Урбанский написал:
--
С уважением,
Владимир Урбанский                          
mailt...@tut.by
                                 

serge62

unread,
Jun 7, 2016, 2:45:46 AM6/7/16
to ClaList
Блин, работает! А почему же система переименовывать дает, а переписывать и удалять нет?

вторник, 7 июня 2016 г., 15:48:47 UTC+10 пользователь Вячеслав Черников написал:
Аналогично можно и для dll делать.
7 июня 2016 г., 9:39 пользователь Владимир Урбанский <infob...@gmail.com> написал:
Добрый день!

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


Вы писали 7 июня 2016 г., 8:21:26:


Добрый день, коллеги!  ШВС 6.3

Есть программка. Раньше она стояла у каждого юзера и пользовалась данными на сервере. Потом для ускорения процесса поставили ее на терминальный сервер, там же и данные,;теперь юзеры запускают ее помощью RDP-файла. Когда надо обновить прогу, я захожу на сервер, в специальном файле устанавливаю флаг в единицу, а прога по таймеру в AppFrame раз в две минуты опрашивает этот флаг, и, если он 1, то вырубается. И я меняю экзешник. Но не раз так бывало, что фокус не срабатывает. У кого-то из юзеров прога висит и нихрена флаг не опрашивает. Приходится звонить сисадминам, чтобы вручную убили процесс, так как я таких прав не имею. Что очень неудобно. А вот вчера у одного пользователя сессия так загнулась, что программа ни на что не реагирует, перезагрузка не помогает, при попытке запустить прогу заново он попадает в ту же зависшую сессию, и сисадмины уже домой ушли. Поскольку все считают Кларион полной дичью, мне говорят, что вот, мол , нечего на говне писать. Вопрос - кто-нибудь сталкивался с такой проблемой (зависание терминальной сессии) и кто в этом виноват - сеть, сервер, Кларион, я, Путин? И что делать?




--
С уважением,
Владимир Урбанский                          
mailt...@tut.by
                                 

Чаплыгин В. Г.

unread,
Jun 7, 2016, 2:46:32 AM6/7/16
to cla...@googlegroups.com

Сомневаюсь что переименовать позволит!

Скорее сделать BAT файл с запуском проги, а в нем уже можно менять имя проги на запуск то прог1.ехе  прог2.ехе

Разумеется не подойдет для изменения форматов  базы.



07.06.2016 9:40, serge62 пишет:
--
Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

-- 
С уважением Чаплыгин Вадим Геннадьевич
мой адрес chapli...@yandex.ru
мой сайт в интернете chapligin.hut4.ru

serge62

unread,
Jun 7, 2016, 2:47:05 AM6/7/16
to ClaList
Владимир, спасибо!


serge62

unread,
Jun 7, 2016, 2:49:04 AM6/7/16
to ClaList
А не может тут таймер вредить? Может из-за этих прерываний и зависает?


Владимир Урбанский

unread,
Jun 7, 2016, 2:50:43 AM6/7/16
to serge62
Добрый день!

Да, все именно так. Писать поверх нельзя, а переименование проходит без вопросов со стороны сервера. Поэтому переименовываем, а затем пишем обновленный экзешник.

Вы писали 7 июня 2016 г., 9:40:05:


C этого места поподробнее. Т.е. поверх писать не дает, а переименовать можно? Т.е. поступаем так - hosp.exe -> hospold.exe и пишем новый hosp.exe?  




--
С уважением,
Владимир Урбанский                          
mailto:u...@tut.by
                                   http://www.buhsoft.ucoz.net/

serge62

unread,
Jun 7, 2016, 2:50:44 AM6/7/16
to ClaList, chapli...@yandex.ru
Что интересно, позволяет!

вторник, 7 июня 2016 г., 16:46:32 UTC+10 пользователь Чаплыгин В. Г. написал:

Валерий Будько

unread,
Jun 7, 2016, 2:57:53 AM6/7/16
to cla...@googlegroups.com

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

 

А переименовывать дает потому что имя файда нужно только для запуска а далее система работает через handle

 

С уважением

   Валерий Будько

  mailto:wbudko@gmail.com

--

Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.


Без вирусов. www.avast.com

serge62

unread,
Jun 7, 2016, 3:23:35 AM6/7/16
to ClaList
Спасибо за очень ценное знание! А что насчет зависа? Есть идеи?



Без вирусов. www.avast.com

Губин Игорь

unread,
Jun 7, 2016, 3:28:55 AM6/7/16
to cla...@googlegroups.com
Очень простой способ, если нет возражений от сисадминов:
Пользователи запускают не программу, а пускач, который читает из ini
какую задачу запустить через run и отвалиться. А INI можно редактировать
в любой момент.


--
------------------------------------------------------------
Губин Игорь
Тел./факс: (+7 495) 989 7021
ICQ: 258187926
Google Talk: metaldata.info
WEB: http://www.metaldata.info

Юрий Философов

unread,
Jun 7, 2016, 3:50:12 AM6/7/16
to cla...@googlegroups.com
Таймер - зло! Есть команда Idle, гораздо более адекватная. 

7 июня 2016 г., 9:49 пользователь serge62 <pavle...@gmail.com> написал:
А не может тут таймер вредить? Может из-за этих прерываний и зависает?


--
Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.



--
С уважением,
Юрий Философов

Вячеслав Черников

unread,
Jun 7, 2016, 4:10:38 AM6/7/16
to clalist
С idle та же проблема имеет место быть. 
Проще всего ночью все сессии автоматом сбрасывать, а утром ставить обновления.

7 июня 2016 г., 11:50 пользователь Юрий Философов <padre...@gmail.com> написал:

serge62

unread,
Jun 7, 2016, 6:16:32 AM6/7/16
to ClaList
А в чем зло таймера и idle?

Хотя я подсознательно понимаю, что когда программа дергает систему или наоборот, это не есть хорошо. А поконкретнее?

Губин Игорь

unread,
Jun 7, 2016, 6:25:31 AM6/7/16
to cla...@googlegroups.com
07.06.2016 13:16, serge62 пишет:
> А в чем зло таймера и idle?

Зло таймера в том, что таймер через секунду не обязательно отработает
через секунду. Таймер завязан на сообщения, а они могут запаздывать при
перегруженности системы. Т.е., если ты поставил отработку каждую
секунду, может случиться так, что полчаса ничего не происходит, а потом
сразу 1800 раз подряд.

Зло idle в том, что она тормозит окно в котором запущено. Т.е. пока не
пройдёт - ничего не сделаешь

>
> Хотя я подсознательно понимаю, что когда программа дергает систему или
> наоборот, это не есть хорошо. А поконкретнее?
>
>
> --
> Вы получили это сообщение, поскольку подписаны на группу "ClaList".
> Чтобы отменить подписку на эту группу и больше не получать от нее
> сообщения, отправьте письмо на электронный адрес
> clalist+u...@googlegroups.com
> <mailto:clalist+u...@googlegroups.com>.
> Чтобы настроить другие параметры, перейдите по ссылке
> https://groups.google.com/d/optout.


--

Олег А. Руденко

unread,
Jun 7, 2016, 7:47:51 AM6/7/16
to Губин Игорь
Здравствуй, Игорь!

Это ты о чем?
IDLE запускается только в головном трейде и никого не тормозит.

Или ты о том, что окно из idle-процедуры всегда запускается
в модальном режиме и, естественно, берет все ресурсы приложения
на себя? Ну, так можно само окно не открывать, а просто стартовать
из idle-процедуры новый поток, в котором уже и открывать окно.

вторник, 7 июня 2016 г., Вы писали:

ГИ> 07.06.2016 13:16, serge62 пишет:
>> А в чем зло таймера и idle?

ГИ> Зло таймера в том, что таймер через секунду не обязательно отработает
ГИ> через секунду. Таймер завязан на сообщения, а они могут запаздывать при
ГИ> перегруженности системы. Т.е., если ты поставил отработку каждую
ГИ> секунду, может случиться так, что полчаса ничего не происходит, а потом
ГИ> сразу 1800 раз подряд.

ГИ> Зло idle в том, что она тормозит окно в котором запущено. Т.е. пока не
ГИ> пройдёт - ничего не сделаешь

>>
>> Хотя я подсознательно понимаю, что когда программа дергает систему или
>> наоборот, это не есть хорошо. А поконкретнее?
>>
>>
>> --
>> Вы получили это сообщение, поскольку подписаны на группу "ClaList".
>> Чтобы отменить подписку на эту группу и больше не получать от нее
>> сообщения, отправьте письмо на электронный адрес
>> clalist+u...@googlegroups.com
>> <mailto:clalist+u...@googlegroups.com>.
>> Чтобы настроить другие параметры, перейдите по ссылке
>> https://groups.google.com/d/optout.


ГИ> --
ГИ> ------------------------------------------------------------
ГИ> Губин Игорь
ГИ> Тел./факс: (+7 495) 989 7021
ГИ> ICQ: 258187926
ГИ> Google Talk: metaldata.info
ГИ> WEB: http://www.metaldata.info




=============================
С уважением, Олег А. Руденко.
Oleg_R...@mail.ru

Губин Игорь

unread,
Jun 7, 2016, 7:52:53 AM6/7/16
to cla...@googlegroups.com
07.06.2016 14:47, 'Олег А. Руденко' via ClaList пишет:
> Здравствуй, Игорь!
>
> Это ты о чем?
> IDLE запускается только в головном трейде и никого не тормозит.

Извините, переклинило. Почему-то перепутал со Sleep
Каюсь, виноват, обещаю исправиться и не пить столько чая на ночь
--
------------------------------------------------------------
Губин Игорь
Тел./факс: (+7 495) 989 7021

Юрий Философов

unread,
Jun 7, 2016, 8:06:31 AM6/7/16
to cla...@googlegroups.com
Давно это было... 

1. В своё время поимел гадостей, когда обработчик таймера запускался в неактивном окне во время открытия или закрытия нового треда, обработки  события OCX ну и что-то подобного со сбоем переключения тредов .
А Idle запускается (по крайней мере, должна), когда программа заведомо неактивна. И работает только в первом треде. 
2. А если взять фрейм, повесить на него таймер, а потом окрыть из фрейма окно (не MDI), то таймер сдохнет. А idle продолжит работу 

В общем, если нужен фоновый процесс - idle лучшее... 

С уважением,
Юрий Философов 


7 июня 2016 г., 13:25 пользователь Губин Игорь <gubi...@gmail.com> написал:
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Настройки подписки и доставки писем: https://groups.google.com/d/optout.

Alex

unread,
Jun 7, 2016, 9:39:46 AM6/7/16
to cla...@googlegroups.com
А такой вопрос. Есть прога, которая пользует через ODBC базу MySql на хостинге. Прогу нужно запустить и в течении дня пользовать. База по таймауту периодически отваливается. Приходится перезапускать. Можно ли как-то через idle обращаться к базе и если ошибка, то переполключиться?

07.06.2016, в 15:06, Юрий Философов <padre...@gmail.com> написал(а):

Губин Игорь

unread,
Jun 7, 2016, 9:45:05 AM6/7/16
to cla...@googlegroups.com
07.06.2016 16:39, Alex пишет:
> А такой вопрос. Есть прога, которая пользует через ODBC базу MySql на хостинге. Прогу нужно запустить и в течении дня пользовать. База по таймауту периодически отваливается. Приходится перезапускать. Можно ли как-то через idle обращаться к базе и если ошибка, то переполключиться?

По идее - да

>
> 07.06.2016, в 15:06, Юрий Философов <padre...@gmail.com> написал(а):
>
>> Давно это было...
>>
>> 1. В своё время поимел гадостей, когда обработчик таймера запускался в неактивном окне во время открытия или закрытия нового треда, обработки события OCX ну и что-то подобного со сбоем переключения тредов .
>> А Idle запускается (по крайней мере, должна), когда программа заведомо неактивна. И работает только в первом треде.
>> 2. А если взять фрейм, повесить на него таймер, а потом окрыть из фрейма окно (не MDI), то таймер сдохнет. А idle продолжит работу
>


Юрий Философов

unread,
Jun 7, 2016, 10:21:54 AM6/7/16
to cla...@googlegroups.com
Я не переподключался, а перезапускал программу. Обычно если коннект разорвался, Browse-Form-Report может выдавать всякие странные сообщения и дальше не пускает, никакое переподключение не помогает.  




7 июня 2016 г., 16:45 пользователь Губин Игорь <gubi...@gmail.com> написал:
--
Вы получили это сообщение, поскольку подписаны на группу ClaList.

Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Настройки подписки и доставки писем: https://groups.google.com/d/optout.

Alex

unread,
Jun 7, 2016, 10:56:35 AM6/7/16
to cla...@googlegroups.com
Перезапуск из программы?

07.06.2016, в 17:21, Юрий Философов <padre...@gmail.com> написал(а):

Nikolay Tsigouro

unread,
Jun 7, 2016, 11:16:26 AM6/7/16
to ClaList
Привет.

Потому, что так устроено управление памятью. Когда требуется освободить RAM за счет не работающей задачи заднего плана, сегменты данных сбрасываются в swap-файл, а сегменты кода просто удаляются, а когда задача становится активной, сегменты данных подгружаются из swap-а, а сегменты кода из exe/dll. Поэтому exe/dll должны существовать в неизменном виде пока хоть один процесс их использует. А как они именуются, совершенно не важно. Их имя нужно только при запуске проги. Все остальные операции выполняются через хэндл.

PS. Переименование будет безболезненным только если имя файла не используется в самой проге. Например для самоконтроля целостности файла или перезапуска через RUN (например, если нужно перезапуститься с админскими правами).

WBR, Nikolay Tsigouro

7 июня 2016 г., 9:45 пользователь serge62 <pavle...@gmail.com> написал:

Nikolay Tsigouro

unread,
Jun 7, 2016, 11:23:14 AM6/7/16
to ClaList
Если отваливается по таймауту, то я бы запустил фоновый процесс, который раз в ... выдавал бы через prop:SQL что-то вроде SELECT 1 FROM DUMMY_TABLE WHERE 1=0

WBR, Nikolay Tsigouro

7 июня 2016 г., 16:39 пользователь Alex <savs...@gmail.com> написал:

Alex

unread,
Jun 7, 2016, 11:27:45 AM6/7/16
to cla...@googlegroups.com
А что подразумевается под фоновым процессом?

07.06.2016, в 18:23, Nikolay Tsigouro <n.tsi...@gmail.com> написал(а):

Nikolay Tsigouro

unread,
Jun 8, 2016, 3:21:31 AM6/8/16
to ClaList
Безоконная процедура запущенная в отдельном треде. Практически, сервис. Но он должен использовать тоже подключение, что и основной код. Поэтому это не отдельный сервис.
Можно использовать IDLE, но я для организации паузы использовал бы WINAPI-шный sleep: https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms686298(v=vs.85).aspx. В клаше

 

  MODULE('')

   SLEEP(LONG),PASCAL

  END

 

В Idle меня смущает а) жесткая привязка к треду APPLICATION-а, б) возможность активации только одной idle процедуры. А если мне нужно две (три,...) подобных задачи с разной задержкой решать?



WBR, Nikolay Tsigouro

7 июня 2016 г., 18:27 пользователь Alex <savs...@gmail.com> написал:

Oleg Fomin

unread,
Jun 8, 2016, 4:51:12 AM6/8/16
to cla...@googlegroups.com
Alex,

Примечательно, но даже на профильном форуме нет ответа на этот вопрос.
http://forums.mysql.com/read.php?37,573832

Остается не давать спать коннекту через таймер (лучше апишный) или, как Николай предложил,
WINAPI-шный sleep: https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms686298(v=vs.85).aspx

MODULE('')
SLEEP(LONG),PASCAL
END

Кстати, эта MAP декларация из Клашиного хелпа.

Не забудь поделиться здесь своим результатом решения задачи.

Олег.

Вячеслав Черников

unread,
Jun 8, 2016, 10:45:41 AM6/8/16
to clalist
Привет.
Если задачка позволяет, то при работе через интернет можно не держать постоянный коннект. Я недавно запустил небольшое приложение, работающее по такой схеме с ip-драйвером. Если держать постоянный коннект, то при отвале соединения все виснет и переподключиться не получается. Фик знает почему. Вначале сделал запуск операций с сервером в отдельном потоке, чтобы ip-сервер завершал сессию после обработки. На winXP, win7 и вроде на win10 работало достаточно стабильно, если не считать долгого опроса при отвале соединения. Но на win8 глючило. После этого вынес все операции с удаленной базой данных (tps) на отдельный exe и стал запускать его из основного как процесс. Немного медленнее стало, но для пользователей вполне комфортно. Глюки ушли, а при обрыве соединения процесс рубится программой через 10 сек, что нужно по условиям задачи. Задачка - организация удаленной точки продаж, которая может переключаться между онлайн и оффлайн режимами работы.

8 июня 2016 г., 12:52 пользователь Oleg Fomin <ol...@fomin.info> написал:
Reply all
Reply to author
Forward
0 new messages