Технологический журнал 1С и бесконечный цикл в коде 1С

Несмотря на то, что проблема в статье История одного конфликта блокировок 1С , казалось, была решена, ее повторное появление не заставило себя долго ждать.
Пользователь Лапкина вновь приступила к работе и ее сеанс снова парализовал работу пользователей системы с блокируемым справочником.
Описание ошибки:
Пользователь создает элемент справочника и при записи система 1С:Предприятия «повисает».
Сеанс закрывается пользователем, а блокировка ресурсов продолжает «висеть» в системе и мешать работать другим пользователям, до момента завершения из консоли «Администрирование серверов 1С Предприятия» администратором блокирующего сеанса.
Попытка смоделировать ситуацию не увенчалась успехом. Описываемого пользователем сценария не повторилось.
Расследование:
Расследуем также наиболее полный на события технологический журнал. Который был получен после повторения описываемого пользователем сценария возникновения проблемы.
Сначала отбираем всю информацию по интересующему нас пользователю «Лапкина».
1 |
grep -P 'Лапкина' --color / D/logs1с/rphost_*/*.log |
Получаем следующий результат.
1 2 3 4 |
03:45.051000-992,DBPOSTGRS,6,process=rphost,p:processName= base,OSThread=21434,t:clientID=63054,t:applicationName=WebServerExtension,t:computerName=1s-on-web,t:connectID=218530,SessionID=284296,Usr=Лапкина,AppID=1CV8C,DBMS=DBPOSTGRS,DataBase=1s-on-1c\base,Trans=1,dbpid=27140,Sql='SELECT ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH 32:39.723000-0,EXCP,4,process=rphost,p:processName= base,OSThread=21434,t:clientID=63054,t:applicationName=WebServerExtension,t:computerName=1s-on-web,t:connectID=218530,SessionID=284296,Usr=Лапкина,AppID=1CV8C,Exception=95c658d1-d3d5-4ea9-8a81-1bf820fea4a8,Descr='./src/RemoteCallListenerImpl.cpp(3793): 32:39.726001-0,EXCP,5,process=rphost,p:processName= base,OSThread=21434,t:clientID=63054,t:applicationName=WebServerExtension,t:computerName=1s-on-web,t:connectID=218530,SessionID=284296,Usr=Лапкина,AppID=1CV8C,Exception=SeanceContextException,Descr='Сеанс отсутствует или удален |
Обнаруживаем интересную ситуацию.
Между двумя соседними событиями пользователя «Лапкиной» большой временной перерыв – с 3 минут до 32. А на 32 минуте исключительная ситуация сброса сеанса.
Далее находим 20 строк до и после запуска события Лапкиной в 03.45.
1 |
grep -P '^03:45.' --color /D/logs1с/rphost_*/21042611.log -C 20 |
Видим контекст вызванного события.
1 |
03:45.051000-992,DBPOSTGRS,6,process=rphost,p:processName=base,OSThread=21434,t:clientID=63054,t:applicationName=WebServerExtension,t:computerName=1s-on-web,t:connectID=218530,SessionID=284296,Usr=ЛапинаМЮ,AppID=1CV8C,DBMS=DBPOSTGRS,DataBase=1s-on-1c\base,Trans=1,dbpid=27140,Sql='SELECT ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH FROM v8users WHERE ID >= $1 AND ID <> $2 ORDER BY ID LIMIT 1',Prm=" -p_1: '\\306\\237\\000PV\\267V\\265\\021\\353am\\310\\013\\217J'::bytea p_2: '\\225*P\\031\\352\\346\\241\\367@#\\347\\226n>\\341\\336'::bytea",RowsAffected=1,Result=PGRES_TUPLES_OK,Context='Форма.Записать : Справочник.Пользователи.Форма.ФормаЭлемента Справочник.Пользователи.МодульОбъекта : 221 : ПользователиСлужебный.ЗавершитьОбработкуПользователяИБ( ОбщийМодуль.ПользователиСлужебный.Модуль : 2633 : СкопироватьНастройкиПользователяИБ(ПользовательОбъект, ПараметрыОбработки); ОбщийМодуль.ПользователиСлужебный.Модуль : 5644 : ОписаниеКопируемогоПользователяИБ = Пользователи.СвойстваПользователяИБ(ИдентификаторКопируемогоПользователяИБ); ОбщийМодуль.Пользователи.Модуль : 800 : ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ИмяИлиИдентификатор);' |
По контексту видим, что запись была запущена при создании объекта методом копирования. И место в коде конфигурации.
При дальнейшем анализе кода конфигурации обнаруживаем, что, в связи с определенными доработками системы – в данном месте возникал бесконечный цикл, который и блокировал ресурсы справочника до момента, когда сеанс был сброшен принудительно администратором.
Решение:
Устраним ошибку в коде конфигурации, которая приводила к возникновению бесконечного цикла при записи элемента справочника созданного методом копирования.
Изображение PublicDomainPictures с сайта Pixabay
Еще можно посмотреть
Пропажа индексов дескрипторов в 1С:Документообороте
Пользователи копии продуктивной базы начали жаловаться на полное падение производительности в 1C:Документообороте на PostgresPro Enterprise + Linux. С их слов 1С сильно тормозила и это проявлялось везде: при входе в базу, открытии документов, списков, справочников, задач. При анализе происходящего из консоли администрирования 1С в момент запуска системы видим, что зависание начинается в момент обращения к […]
Что такое PG_TEMP в PostgreSQL для 1С
pg_temp — это пространство СУБД PostgreSQL для временных таблиц, то есть таблиц, существующих в пределах жизни одного соединения (в терминах СУБД) или сеанса (в терминах кластера 1С). Такие таблицы мы можем увидеть в тексте запроса СУБД, если в запросе на языке запросов 1С присутствует конструкция ПОМЕСТИТЬ, которая и помещает выборку во временную таблицу. Таким образом […]
Статистика PostgreSQL при работе с 1С:Предприятием
В этой статье поговорим о статистике в PostgreSQL. 1. Симптомы неактуальной статистики в базе. 2. Как обновляется статистика в PostgreSQL и надо ли ее обновлять принудительно? 3. Как обновить статистику в PostgreSQL вручную? Симптомы неактуальной статистики в базе. В какой-то момент(в какой именно теперь уже не вспомнит никто) тестовая база начала сильно тормозить, при низкой […]
1C тормозит и возникают ошибки. С чего начать расследование?
Когда мы читаем о том, как настраивать и анализировать технологический журнал 1С на предмет «узких» мест, мы не всегда представляем себе, что это отнюдь не первое, что нужно сделать, когда сталкиваемся с падением производительности и стабильности работы системы. Прежде чем «бросаться» собирать технологический журнал и его парсить, изначально рекомендуется провести первичный сбор информации о проблеме: […]
Ошибка 1С:Предприятие «Потеряно соединение»
Потеряно соединение Во время выполнения действия была потеряна связь с сервером. Проверьте сетевой соединение и нажмите "Повторить" для повторной попытки выполнения действия. Если ошибка повторится, возможно, сервер временно недоступен.
История одного конфликта блокировок 1С
В определенный момент времени, пользователи информационной базы, которые ранее работали без проблем — начали жаловаться на возникновение ошибок при записи элемента справочника. В нашем распоряжении оказались скрины и тексты ошибок, переданные пользователями. Без возможности самостоятельного воспроизведения проблемы в этой или каких-либо других тестовых базах данных. 1. Знакомимся с текстами ошибок. 2. Парсим технологический журнал 1С […]
Настройка и сбор логов для анализа проблем производительности систем 1С на Linux
Для осуществления мониторинга за качеством работы систем на базе 1С, а также для анализа проблем с производительностью, необходимо уметь настраивать сбор логов, дампов. Настройка сбора логов 1С под Linux имеет ряд особенностей. О них мы и поговорим в данной статье. Описание приводится для ОС Linux дистрибутивов RHEL/CentOS 7. 1. Как настроить и включить технологический журнал […]
Похожие записи
- Ошибка 1С:Предприятие «Потеряно соединение»
- Расследование конфликтов управляемых блокировок (TTIMEOUT) 1С:Предприятия
- Что такое PG_TEMP в PostgreSQL для 1С
- НАСТРОЙКА PG_PROFILE ДЛЯ POSTGRESQL 1.
- Статистика PostgreSQL при работе с 1С:Предприятием
- Настройка непрерывного архивирования (point-in-time-recovery, PITR) в PostgresPro 11 Linux
- Пропажа индексов дескрипторов в 1С:Документообороте
- История одного конфликта блокировок 1С
- 1C тормозит и возникают ошибки. С чего начать расследование?
- Анализ технологического журнала 1С регулярными выражениями. От простого к сложному.