К вопросу о зависающих фоновых заданиях в 8.1

03.09.09

Разработка - Инструментарий разработчика

Фоновые задания в клиент-серверном варианте иногда зависают так, что снять их можно только путем перезапуска службы. Насколько я понял, никто не знает, что с этим делать. И я не знаю. Но могу поделиться опытом, как научиться с этим жить :)

Входные условия :

Есть в клиент-серверной базе предопределенное регламентное задание с методом МойОбщийМодуль.МояПроцедура1, которое раз в N минут должно что-то делать в базе. Периодически по непонятным причинам фоновое задание, порождаемое регламентным, зависает. Как уже сказано выше, снять его проблематично. Но что еще хуже, новое фоновое задание стартовать не хочет. А зачем? Одно ведь уже выполняется!

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

Как я с этим боролся:

1) Регламентное задание убираем из конфигурации

2) Вводим пользователя специально для выполнения этой процедуры.

3) В Процедуре ПриНачалеРаботыСистемы пишем примерно так:

	 Если ИмяПользователя()="ЭтоСамоеИмя" Тогда
    МойОбщийМодуль.МояПроцедура2();
    ПрекратитьРаботуСистемы();
КонецЕсли;

4) В общем модуле МойОбщийМодуль

	 Процедура МояПроцедура2() Экспорт
    МоеФЗ=ФоновыеЗадания.Выполнить("МойОбщийМодуль.МояПроцедура1",,Строка(ТекущаяДата()));
КонецПроцедуры

5) В Планировщике Windows делаем задание на запуск базы с этим пользователем с нужным расписанием.

Что мы этим достигаем? Того же, что и в первом случае, за исключением того, что каждое фоновое задание запускается с уникальным ключом (см. третий параметр в методе выполнить). Поэтому зависшее фоновое задание не мешает стартовать следующим.

И контрольный выстрел : чтобы почистить зависшие фоновые задания раз в сутки ночью выполняем с помощью планировщика задание на

	 net stop...  net start...

Решение громоздкое, некрасивое и не нравится мне. Прошу сильно не пинать. Это больше приглашение к дискуссии. Буду рад, если кто-то предложит лучше.


См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

12000 руб.

02.09.2020    170939    956    403    

913

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    13705    105    46    

107

Инструментарий разработчика Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    27077    93    48    

136

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    17140    42    15    

75

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

15000 руб.

10.11.2023    11777    43    27    

67

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3840 руб.

14.01.2013    190992    1152    0    

919

Инструментарий разработчика Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    1045    2    0    

5

Инструментарий разработчика Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    104060    244    100    

307
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Душелов 4021 03.09.09 21:53 Сейчас в теме
Пакетный запуск 1С использовался еще в 7-ке, до появления регламентных заданий.

А с зависшими регламентными заданиями надо разбираться...
2. пользователь 03.09.09 22:22
Сообщение было скрыто модератором.
...
3. bulpi 217 03.09.09 22:41 Сейчас в теме
2 Maniac(2)

Это я пробовал. В том то и дело, что они не рубятся. Впрочем, это как раз такая тема, которая понимается, когда лично тебя петух клюнет. Если вас еще ни разу не клюнул - просто радуйтесь жизни.
Кстати, Вас, Dushelov (1) это тоже касается :)
4. Душелов 4021 03.09.09 22:51 Сейчас в теме
(3) Зависали сессии. Было. Проблема в коде (блокировки транзакций) была. Пишите безопасный код, тогда сведете зависания к минимуму.
tango; theshadowco; +2 Ответить
5. bulpi 217 04.09.09 12:25 Сейчас в теме
(4)
Во! Это уже конструктифф ! Что Вы имеете в виду под безопасным кодом ?
Немного подробнее о том, что делается в зависающей процедуре. Вызывается через Интернет (web-интерфейс) другая база, туда-сюда гоняются xml-строки, создаются и проводятся документы.
6. a-novoselov 1158 17.02.10 15:21 Сейчас в теме
(0) Через консоль кластера задание не убивается??? Что-то с трудом в это верится...
Кстати, с пустыми именами пользователя в консоли могут висеть не только фоновые задания, но и, например, пользователи, которые оставили окошко с вводом пароля аутентификации... соединение есть, а пользователя нет (еще не вошел). Тоже нормально гасятся через консоль кластера 1С.
7. Душелов 4021 17.02.10 15:57 Сейчас в теме
(6) Не убиваются. Замечено не однократно.
И соединения не гасятся, блокировка регламентных и соединений в консоли тоже не помогает.
8. a-novoselov 1158 17.02.10 16:47 Сейчас в теме
(7) А что пишет? Блокировка-то понятно, что не помогает... А вот когда заходим в консоль серверов 1С предприятия, выбираем в дереве наш кластер\сервер\нашу ИБ\соединения... нажимаем на нужное правой кнопкой, пункт "Удалить", и не убирается? или снова появляется? или ошибку выдает?
9. Душелов 4021 17.02.10 16:50 Сейчас в теме
(8) Соединение удаляется и появляется снова.
10. a-novoselov 1158 17.02.10 17:11 Сейчас в теме
(9) Дак надо код тогда смотреть, нахрена она в цикле в базу долбится. Против пользователей, которые на автоподключение 1С-ку ставят блокировка помогает, а вот с заданиями похоже надо с каждым конкретным случаем разбираться. Хотя тут конечно спорный вопрос. Конечно программа должна работать так, как хочет программист, но если код платформы закрыт, то может что-то и в ней глюкать. Но это очень маловероятно, т.к. платформа 8.1 вылизана до мелочей...
11. Душелов 4021 17.02.10 17:13 Сейчас в теме
(10) При чем тут вообще цикл?
12. venger 2124 17.02.10 17:25 Сейчас в теме
(10)
...т.к. платформа 8.1 вылизана до мелочей...


:D
13. tango 546 17.02.10 17:31 Сейчас в теме
(10) "платформа 8.1 вылизана до"

удивляйся
http://www.infostart.ru/public/65146/
17. markers 278 06.08.10 06:49 Сейчас в теме
(8) У меня даже не повисшие фоновые не рубятся ни через что..... как писал (9) соединение появляется вновь. А вообще как и говорилось, надо отлаживать код... У нас были моменты когда фоновое зацикливалось и вообще блокировало доступ в базу, подставив в нужном месте ЗафиксироватьТранзакцию(); проблема снялась. И т.д. и т.п.
14. Душелов 4021 17.02.10 17:41 Сейчас в теме
Блаженны верующие... :D
15. a-novoselov 1158 17.02.10 17:42 Сейчас в теме
Ладно, про вылизанную платформу погорячился чуток)) Хотя в типовых решениях данные всетаки обработками в режиме энтерпрайз к нормальному виду приводятся... Но вот такой жесткий косяк, если код за собой тапки пытается убрать (ЗавершитьРаботуСистемы) а платформа этот код все равно весит... Просто слов нет, как это называется.
16. tango 546 17.02.10 18:07 Сейчас в теме
18. PaNick 148 02.10.10 19:19 Сейчас в теме
Автор прав, глюк есть. Он проявляется при доступе в инет. Например обмен с фтп. Сессия подвисает и не убивается. Его вариант удобен, если есть возможность сделать перерывы в работе. А если база должна работать 24 часа, приходится извращаться другими способами. Я вышел тоже кривым способом: создал клиентскую обработку, которая подстраховывает на случай зависания задания. И при зависании пользователям сыпятся сообщения, что нужно ее запустить в отдельной программе. Благо виснут они не очень часто - раз-два в месяц. Но всеж было бы замечательно без этого )
19. xantimans 17.11.10 13:03 Сейчас в теме
А в этом фоновом задании случаем OLE не используете? Если да, то скорее всего он и виноват, ненадежный зараза :cry:
20. bulpi 217 17.11.10 13:30 Сейчас в теме
(19)
Нет, дело в том, что в процессе выполнения задания идет обращение в интернет. Зависает ТАМ. Я раскопал в документации объяснение, что снять задание невозможно, т.к. в серверных процедурах останов действует, только когда управление передается на следующий оператор за тем, во время которого произошла попытка останова. А управление не передается никогда, т.к. зависло. Можно переписать с серверных процедур на клиентские, раз я все равно запускаю сеанс. Но тогда кто-то должен вручную снять задание, т.е. кто-то должен следить за этим. А чтобы не следить, вот я и предложил такое.
21. Alav 13 26.01.11 11:51 Сейчас в теме
Есть такое и на 8.2. причем там хуже. В режиме УФ часто используются фоновые, поэтому там чаще он себя проявляет.

Например накидал отчет на СКД, который тупо выводить содержимое регистра. На толстом клиенте в обычном режиме - все ОК, за секунду выводит. в режиме УФ виснит зараза (пораждает фоновый процесс, а результата нет). Помогло только рестарт сервера предприятия. Тогда сразу все взлетело.

P.S. А кто нибудь рестарт рабочих процессов настраивал, для борьбы с этим?
22. WellMaster 104 24.02.11 16:21 Сейчас в теме
Сам когда-то пытался бороться с проблемой завершения и удаления фоновых заданий (причем не только зависших, но и просто отработанных). Пришел к выводу, что это невозможно.
Также ищу решение по задаче рестарта работчих процессов.
23. tango 546 24.02.11 19:03 Сейчас в теме
фоновое задание, убивающее фоновые задания
Это я так, сказал просто
24. sml 41 27.03.12 17:25 Сейчас в теме
у меня те же грабли. То задания выполняются, а то вдруг в какой-то момент виснут, причем иногда все сразу.
25. voshkaniridze 24.02.13 20:23 Сейчас в теме
У меня такая проблема, переходить на предложенную схему неохота. А как узнать где именно зависает? Может блокировки, может транспорт? Как узнать?
26. ROM_1C 692 05.03.18 15:38 Сейчас в теме
Так и не понял, есть ли еще решения для данной проблемы?
27. bulpi 217 05.03.18 21:50 Сейчас в теме
(26)
Нет. Уже 8.3, но все так и осталось. Для баз, у которых есть необходимость периодически лазить в инет, и при этом критично, чтобы эти задания ОБЯЗАТЕЛЬНО выполнялись, я использую планировщик заданий Windows с запуском клиентских сеансов, вместо механизма регламентных заданий.
Оставьте свое сообщение