Конфликт блокировок при выполнении транзакции в 1С

Самые распространенные причины появления ошибки в 1С 8.3 и 8.2. Методы исправления ошибки и её профилактики.

Причины и способы решения проблемы

Большое количество выполняемых операций

Первым делом при поиске причин следует уточнить, сколько же одновременно работающих пользователей находится в той информационной базе, в которой выдается подобная ошибка. Как мы знаем, максимальное их количество может быть довольно большим. Это и тысяча, и пять тысяч.

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

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

Регламентные задания

Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.

Связаться с нами можно по телефону

+7 499 350 29 00

.

Услуги и цены можно увидеть по

ссылке

.

Будем рады помочь Вам!

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

Таким образом, и пользователи будут работать в стабильной системе, и сами регламентные задания будут завершаться успешно, так как снизится вероятность возникновения конфликтов с пользовательскими сеансами.

«Зависшие сеансы»

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

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

Ошибки при написании конфигурации

Все типовые конфигурации разработаны квалифицированными специалистами и экспертами. Каждая система тщательно тестируется и оптимизируется для более быстрой и корректной работы в ней.

В связи с этим причина ошибки может крыться в неоптимальном коде, написанном сторонним разработчиком. Это может быть «тяжелый» запрос, который будет блокировать данные на длительный промежуток времени. Так же нередки случаи построения алгоритмов с низкой производительностью и нарушением логики.

Большая вероятность, что конфликт блокировки возник именно из-за ошибок разработчика, если он возник после обновления программы. Для проверки можно просто «откатить» доработки, либо произвести рефакторинг кода.

Конфликт блокировок в 1С 8.3 и его значение

Для большинства пользователей сообщение о конфликте блокировок 1С означает лишь ошибку, мешающую им выполнять свою работу. Они хотят поскорее избавиться от этой проблемы и осаждают IT-отдел жалобами на то, что «1С не работает».

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

Рис.1 Конфликт блокировокРис.1 Конфликт блокировок

Общие сведения

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

Если в работающей системе наблюдаются какие-либо симптомы проблем с производительностью, следует проверить, что в системе правильно настроены и регулярно выполняются все рекомендуемые регламентные операции на уровне СУБД.

Выполнение регламентных процедур должно быть автоматизировано. Для автоматизации этих операций рекомендуется использовать встроенное средства MS SQL Server: Maintenance Plan. Существуют так же другие способы автоматизации выполнения этих процедур. В настоящей статье для каждой регламентной процедуры дан пример ее настройки при помощи Maintenance Plan для MS SQL Server 2005.

Для MS SQL Server рекомендуется выполнять следующие регламентные операции:

  • Обновление статистик
  • Очистка процедурного КЭШа
  • Дефрагментация индексов
  • Реиндексация таблиц базы данных

Рекомендуется регулярно контролировать своевременность и правильность выполнения данных регламентных процедур.

Оценка производительности системы

Оцените текущую производительность системы на основании прикладных критериев. После этого последовательно выполните все нижеследующие рекомендации по шагам. В зависимости от того, как оценивается текущая производительность системы, некоторые шаги могут быть пропущены.

Неудовлетворительная производительность

Критерии:

  • Производительность системы не удовлетворяет требованиям бизнес-логики автоматизируемого предприятия на значительной части операций.
  • Большая часть пользователей системы жалуется:
    • На неприемлемую общую производительность системы.
    • Неприемлемую производительность на отдельных операциях.
    • Внезапное ухудшение производительности.
    • Частое возникновение ошибок:
      • “Lock request time out period exceeded”.
      • “Превышено максимальное время ожидания предоставления блокировки”.
      • “Transaction was deadlocked on lock resources with another process and has been chosen as deadlock victim”.
      • “Конфликт блокировок при выполнении транзакции”.

Недостаточная производительность

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

Настройка технологического журнала

Для расследования конфликтов на управляемых блокировках, во-первых, необходимо настроить технологический журнал на сбор событий TLOCK, TTIMEOUT, TDEADLOCK, при необходимости дополнительно установив отбор по имени базы в свойстве p:processName

<log location=“Z:Locks”history=“8”>

<event>

  <eq property=“Name”value=“TLOCK”/>

  <eq property=“p:processName”value=“MyBase”/>

</event>

<event>

  <eq property=“Name”value=“TTIMEOUT”/>

  <eq property=“p:processName”value=“MyBase”/>

</event>

<event>

  <eq property=“Name”value=“TDEADLOCK”/>

  <eq property=“p:processName”value=“MyBase”/>

</event>

<property name=“all”/>

</log>

Обновление статистик

MS SQL Server строит план запроса на основании статистической информации о распределении значений в индексах и таблицах. Статистическая информация собирается на основании части (образца) данных и автоматически обновляется при изменении этих данных. Иногда этого оказывается недостаточно для того, что MS SQL Server стабильно строил наиболее оптимальный план выполнения всех запросов.

В этом случае возможно проявление проблем с производительностью запросов. При этом в планах запросов наблюдаются характерные признаки неоптимальной работы (неоптимальные операции).

Для того, чтобы гарантировать максимально правильную работу оптимизатора MS SQL Server рекомендуется регулярно обновлять статистики базы данных MS SQL.

Для обновления статистик по всем таблицам базы данных необходимо выполнить следующий SQL запрос:

exec sp_msforeachtable N’UPDATE STATISTICS ? WITH FULLSCAN’

Обновление статистик не приводит к блокировке таблиц, и не будет мешать работе других пользователей. Статистика может обновляться настолько часто, насколько это необходимо. Следует учитывать, что нагрузка на сервер СУБД во время обновления статистик возрастет, что может негативно сказаться на общей производительности системы.

Оптимальная частота обновления статистик зависит от величины и характера нагрузки на систему и определяется экспериментальным путем. Рекомендуется обновлять статистики не реже одного раза в день.

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

Настройка автоматического обновления статистик (MS SQL 2005)

Запустите MS SQL Server Management Studio и подключитесь к серверу СУБД. Откройте папку Management и создайте новый план обслуживания:

Создайте субплан (Add Subplan) и назовите его «Обновление статистик». Добавьте в него задачу Update Statistics Task из панели задач:

Настройте расписание обновления статистик. Рекомендуется обновлять статистики не реже одного раза в день. При необходимости частота обновления статистик может быть увеличена.

Настройте параметры задачи. Для этого следует два раза кликнуть на задачу в правом нижнем углу окна. В появившейся форме укажите имя базу данных (или несколько баз данных) для которых будет выполняться обновление статистик. Кроме этого вы можете указать для каких таблиц обновлять статистики (если точно неизвестно, какие таблицы требуется указать, то устанавливайте значение All).

Обновление статистик необходимо проводить с включенной опцией Full Scan.

Сохраните созданный план. При наступлении указанного в расписании срока обновление статистик будет запущено автоматически.

Как исправить эту ошибку в 1С 8.3?

В любом случае, появление ошибки «Конфликт блокировок при выполнении транзакции» говорит о необходимости инспекции системы, особенно для средних и крупных информационных систем в клиент-серверном режиме работы (MS SQL, PostgreSQL и т.д.). Если это проигнорировать на раннем этапе, возможны необратимые последствия позже, когда работа системы будет особенно важна (в период сдачи отчетности).

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

Другие статьи по 1С:

  • Администрирование
  • Программирование 1С
  • Обучение 1С

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Анализ загруженности оборудования

Если производительность системы признана удовлетворительной, то этот шаг можно пропустить. Переходите к следующему шагу: мониторингу производительности системы.

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

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

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

Практическая проверка материала

Как и раньше, приведу пример для практической проверки материала. Создадим базу данных, в которой установим режим управления блокировкой «Управляемый», основной режим запуска «Обычное приложение», режим использования модальных окон в «Использовать». Добавим в базу регистр сведений «АнализУправляемыхБлокировок» (непериодический, независимый). В регистре добавим измерения: «Измерение1» (тип Число), «Измерение2» (тип Число). Не забудьте настроить технологический журнал как указано в начале статьи. Теперь откройте обработку из вложения к данной статье в двух сеансах, выполните нижеприведенные кейсы и проанализируйте технологический журнал.

Таймаут (TTIMEOUT)

Для создания таймаута необходимо в первом сеансе нажать кнопку «Таймаут 1», во-втором — «Таймаут 2». Дождаться сообщения о таймауте во втором сеансе.

Длительное ожидание на блокировке

Так же как и для таймаута, в первом сеансе нажать «Таймаут 1», во-втором — «Таймаут 2». И не дожидаясь сообщения о таймауте, в первом сеансе нажать кнопку «ОК» модального окна.

Взаимоблокировка вида «захват ресурсов в разном порядке»

В первом сеансе нажать «Взаимоблокировка 1», во-втором «Взаимоблокировка 2», после чего сразу же нажать «ОК» модального окна в первом сеансе, а затем во-втором.

Взаимоблокировка вида «повышение уровня блокировки»

В первом, а затем во-втором сеансе нажать «Взаимоблокировка (повышение уровня блокировки)». После этого сразу же нажать «ОК» модального окна в первом сеансе, а затем во-втором.

Мониторинг производительности системы

Если производительность системы признана неудовлетворительной или недостаточной, то этот шаг можно пропустить. Переходите непосредственно к оптимизации системы.

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

Мониторинг позволит решить следующие задачи:

  • Собирать и накапливать объективную информацию о производительности системы.
  • Оперативно диагностировать проблемы производительности.
  • Выявлять скрытые проблемы производительности. При определенных условиях (например, в начале работы системы, когда информационная база содержит незначительное количество данных) система может работать неоптимально, но пользователи системы не будут этого замечать. Впоследствии эти скрытые проблемы могут проявиться.

Для решения этой задачи рекомендуется использовать Центр управления производительностью, входящий в состав 1С:Корпоративного инструментального пакета.

Рекомендуемая последовательность действий

1. Подключитесь к исследуемой информационной базе при помощи ЦУП в режиме “Мониторинг”.

Подробные инструкции по подключению см. в книге “1С:Корпоративный инструментальный пакет 8. Редакция 1.1. Руководство по использованию”, стр. 37.

2. Включите сбор следующих показателей производительности:

  • Запросы Максимальное время выполнения запроса;
  • Запросы Среднее время выполнения запроса;
  • Ожидания на блокировках Только блокировки СУБД Среднее время ожидания на блокировке СУБД;
  • Ожидания на блокировках Только блокировки СУБД Количество таймаутов;
  • Ожидания на блокировках Только блокировки 1С Среднее время ожидания на блокировке 1С;
  • Взаимоблокировки Количество взаимоблокировок.

Подробные инструкции см. там же, на стр. 41.

3. Включите запись всех показателей производительности (см. там же, на стр. 45).

4. Рекомендуется осуществлять постоянный мониторинг и вести запись показателей в течение всего “срока жизни” системы.

Рейтинг
( 1 оценка, среднее 5 из 5 )
Загрузка ...