Добрый день.
Есть код
Если операцию, производимую в цикле, выполнят ьвне транзакции, то через какое-то время (непрогнозируемое) сервер отцепляет сеанс. Количество памяти за сеанс не выбрано, количество памяти рпхоста тоже, счетчики не подключены, все вроде в норме.
Если же операцию обрамить транзакцией, то код выполняется успешно. С теми же самыми настройками кластера, по тем же самым данным, в той же самой базе.
Вопрос: что происходит с памятью (и с памятью ли) без транзакции, а что фиксация транзакции заставляет сервер сделать с памятью или каким-то счетчиком?
PS Таблица или выборка - не вопрос данной темы.
Есть код
Таблица = Запрос.Выполнить().Выгрузить();//Тут запрос для получения обрабатываемых данных, строк от 100 000
Для каждого Строка из Таблица Цикл
НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый);
ПровестиДокументПоРегиструВзаиморасчетовПоСчетам(Строка.Ссылка);//Обработка строки данных. Допустим, запись регистра
ЗафиксироватьТранзакцию();
КонецЦикла;
ПоказатьЕсли операцию, производимую в цикле, выполнят ьвне транзакции, то через какое-то время (непрогнозируемое) сервер отцепляет сеанс. Количество памяти за сеанс не выбрано, количество памяти рпхоста тоже, счетчики не подключены, все вроде в норме.
Если же операцию обрамить транзакцией, то код выполняется успешно. С теми же самыми настройками кластера, по тем же самым данным, в той же самой базе.
Вопрос: что происходит с памятью (и с памятью ли) без транзакции, а что фиксация транзакции заставляет сервер сделать с памятью или каким-то счетчиком?
PS Таблица или выборка - не вопрос данной темы.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5) За прекращение выполнения не внутри транзакции в вашем случае отвечает параметр "Безопасный расход памяти за один вызов". Одним вызовом считается последовательность действий любой длительности, которая передана с клиента на сервер и не возвращена на клиент. Для обращений к серверу, у которых функция ТранзакцияАктивна() возвращает Истина, параметр безопасного расхода игнорируется. Высвобождение памяти сервером происходит только после возврата вызова на клиент.
Варианты решений.
1. Получить на клиент общий план выполнения, затем выполнять обработку данных порционно, передавая с клиента на сервер ту часть задачи, которую необходимо обработать
2. Создать регистр сведений либо последовательность, в которой будет отражаться состояние проведения цепочек документов (лучше РС), после чего выполнять проведение документов итеративно без передачи плана обработки на клиент, опираясь на данные регистра / последовательности
3. Вернуть параметр "Безопасный расход памяти за один вызов" в дефолтное значение (плохой вариант)
Варианты решений.
1. Получить на клиент общий план выполнения, затем выполнять обработку данных порционно, передавая с клиента на сервер ту часть задачи, которую необходимо обработать
2. Создать регистр сведений либо последовательность, в которой будет отражаться состояние проведения цепочек документов (лучше РС), после чего выполнять проведение документов итеративно без передачи плана обработки на клиент, опираясь на данные регистра / последовательности
3. Вернуть параметр "Безопасный расход памяти за один вызов" в дефолтное значение (плохой вариант)
(4)
'src\VResourceInfoBaseImpl.cpp(1176):580392e6-ba49-4280-ac67-fcd6f2180121: Неспецифицированная ошибка работы с ресурсомОшибка при выполнении запроса POST к ресурсу /e1cib/logForm:e0417abc-63b4-461b-b1b6-01d2d2b0cca5: На сервере 1С:Предприятия произошла неисправимая ошибка. Приложение будет закрыто''src\VResourceInfoBaseImpl.cpp(1176):580392e6-ba49-4280-ac67-fcd6f2180121: Неспецифицированная ошибка работы с ресурсомОшибка при выполнении запроса POST к ресурсу /e1cib/logForm:e0417abc-63b4-461b-b1b6-01d2d2b0cca5: На сервере 1С:Предприятия произошла неисправимая ошибка. Приложение будет закрыто'
03:27.124021-0,EXCP,2,process=rphost,p:processName=t2019,OSThread=13236,t:clientID=66,t:applicationName=1CV8C,t:computerName=1C1,t:connectID=54042,SessionID=1234,Usr=ГолевВМ,AppID=1CV8C,Exception=580392e6-ba49-4280-ac67-fcd6f2180121,Descr='src\VResourceInfoBaseImpl.cpp(1176):580392e6-ba49-4280-ac67-fcd6f2180121: Неспецифицированная ошибка работы с ресурсомОшибка при выполнении запроса POST к ресурсу /e1cib/logForm:e0417abc-63b4-461b-b1b6-01d2d2b0cca5: На сервере 1С:Предприятия произошла неисправимая ошибка. Приложение будет закрыто'
'src\VResourceInfoBaseImpl.cpp(1176):580392e6-ba49-4280-ac67-fcd6f2180121: Неспецифицированная ошибка работы с ресурсомОшибка при выполнении запроса POST к ресурсу /e1cib/logForm:e0417abc-63b4-461b-b1b6-01d2d2b0cca5: На сервере 1С:Предприятия произошла неисправимая ошибка. Приложение будет закрыто''src\VResourceInfoBaseImpl.cpp(1176):580392e6-ba49-4280-ac67-fcd6f2180121: Неспецифицированная ошибка работы с ресурсомОшибка при выполнении запроса POST к ресурсу /e1cib/logForm:e0417abc-63b4-461b-b1b6-01d2d2b0cca5: На сервере 1С:Предприятия произошла неисправимая ошибка. Приложение будет закрыто'
03:27.124021-0,EXCP,2,process=rphost,p:processName=t2019,OSThread=13236,t:clientID=66,t:applicationName=1CV8C,t:computerName=1C1,t:connectID=54042,SessionID=1234,Usr=ГолевВМ,AppID=1CV8C,Exception=580392e6-ba49-4280-ac67-fcd6f2180121,Descr='src\VResourceInfoBaseImpl.cpp(1176):580392e6-ba49-4280-ac67-fcd6f2180121: Неспецифицированная ошибка работы с ресурсомОшибка при выполнении запроса POST к ресурсу /e1cib/logForm:e0417abc-63b4-461b-b1b6-01d2d2b0cca5: На сервере 1С:Предприятия произошла неисправимая ошибка. Приложение будет закрыто'
(13)
Не выполняли. База свежая с января. Ошибка возникала и в самом начале на абсолютно других данных (регистра, который обрабатывали в этот раз еще даже не существовало)
Почему в памяти - на копии ошибка не воспроизводится ввиду отсутствия пользователей. Подумаем над ТиИ.
Не выполняли. База свежая с января. Ошибка возникала и в самом начале на абсолютно других данных (регистра, который обрабатывали в этот раз еще даже не существовало)
Почему в памяти - на копии ошибка не воспроизводится ввиду отсутствия пользователей. Подумаем над ТиИ.
(1) //Тут запрос для получения обрабатываемых данных, строк от 100 000
Скорее всего память сыпится на этом месте!
переделайте на:
Таблица = Запрос.Выполнить().Выгрузить();Скорее всего память сыпится на этом месте!
переделайте на:
Выборка = Запрос.Выполнить().Выбрать();
//и транзакцией обернуть цикл, а не в цикле
транзакция вне цикла "пухнет".
что происходит, когда надувать грелку?
лопнет либо грелка, либо легкие.
посему рационально использовать насос.
а память/не память - от лукавого
что происходит, когда надувать грелку?
лопнет либо грелка, либо легкие.
посему рационально использовать насос.
а память/не память - от лукавого
(9)при том, что если в конфигурации установлено в Авто, то будет в Авто, если не указывать параметр транзакции, а если установлено Управляемый, но при этом не устанавливать сами блокировки, то будет равносильно режиму Авто.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
