» » Как я диагностировал проблемы блокировок. Как я диагностировал проблемы блокировок 1с ms sql конфликт блокировок

Как я диагностировал проблемы блокировок. Как я диагностировал проблемы блокировок 1с ms sql конфликт блокировок

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Причины возникновения ошибок блокировки в 1С

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

Если не брать идеальные варианты, то конфликты блокировок 1С встречаются по следующим причинам:

Одновременная работа пользователей с большим объемом данных. Эта первопричина продиктована внутренними механизмами 1С. Они предполагают запрет изменения данных, вовлеченных в транзакцию, запущенную от имени другого пользователя;

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

  • Неоптимальные запросы;
  • Запрос остатков в начале действий;
  • Непонимание предназначения объектов конфигурации и их неправильное применение;
  • Избыточность заложенных в системе или дополнительно разработанных блокировок.

Как исправить конфликт блокировок в 1С 8.3

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

Решением проблемы конфликта блокировок в 1С 8.3 может стать перевод конфигурации на управляемый (ручной) режим управления блокировками. Реализованный в версии 8.1, механизм в руках грамотных специалистов решает проблему конфликта блокировок при транзакции в 1С.


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

Быстрое решение конфликта блокировок 1С

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

Для быстрого решения проблемы существуют два пути:

  • Найти и завершить сеанс, заблокировавший необходимые данные. В небольших компаниях, где количество пользователей 1С не превышает пары десятков человек, это оптимальный вариант решения;
  • Если вы контролируете систему, в которой работают сотни сотрудников, поиск нужного сеанса без специализированного программного обеспечения может затянуться надолго. В этом случае намного эффективнее будет перезагрузить сервер.

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

Что такое блокировки в 1С, зачем они нужны и как избежать проблем при работе с ними

Наверняка многие из Вас при использовании информационных систем 1С Предприятие (1С 7.7, 1С 8.1, 1С 8.2, 1С 8.3) сталкивались с таким явлением, как блокировки. Причем, как правило, все называют это явление по-разному: «Блокировки 1С», «Конфликт блокировок 1С», «Ошибки блокировок 1С», «Блокировки транзакций 1С» и прочие названия. Давайте кратко разберемся в том, что такое блокировки (не взаимоблокировки), зачем они нужны и как избежать проблем при работе с ними.


Сами по себе блокировки (в том числе в 1С и в других системах) полезный инструмент, который обеспечивает возможность последовательной работы с общими ресурсами. Для примера, понятие «общие ресурсы» окружает нас по жизни, например, пока Вы управляете автомобилем никто другой не может им управлять. Следовательно, автомобиль – общий ресурс. А второй водитель ожидает пока Вы приедете, например, Ваша жена/муж. Вы оба конкурируете за общий ресурс – автомобиль. Кто будет управлять автомобилем в текущий момент Вы определяете на понятийном уровне, а как нам быть в автоматизированных системах??? Для этого и придумали инструмент блокировки , которые обеспечивают организацию процесса доступа к общему ресурсу и определяют очередь. Как правило в жизни, как и в информационных системах (1С 7.7, 1С 8.1, 1С 8.2, 1С 8.3), общих ресурсов очень много, поэтому и блокировок тоже много. Теперь второй важный момент – как долго будет ждать освобождение вашего автомобиля жена/муж, логично предположить, что не вечно. Поэтому для блокировок задается предельное время ожидания – иначе время таймаута. Таймаут - это максимальное время ожидание конкурирующим участником (вашей жены/мужа) освобождения общего ресурса. Дальше либо он продолжает ждать еще такое же время, либо идет пешком. В информационных системах 1С истечение таймаута заканчивается сообщением «Конфликт блокировок 1С», «Ошибки блокировок 1С», «Блокировки транзакций 1С», «Таймаут при блокировке».

Важная деталь, которую также следует помнить, блокировки (в частности в 1С) бывают явные (задаются пользователем) и неявные (задаются платформой SQL). В статье мы говорим о явных блокировках, поэтому они всегда используются в транзакции, отсюда выходит, что «Блокировка 1С» и «Блокировка транзакций 1С» синонимы.

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

  • Множество блокировок 1С в транзакции;
  • Длительность транзакции.

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

Для уменьшения множества блокировок:

В 1С:Предприятие 7.7:

Информационная система 1С 7.7. для блокировок используют табличные блокировки, которые парализуют работу пользователей. Как правило более 50 человек в одной базе данных не могут безошибочно работать, при этом проблемы могут появляться и в базах данных от 20 пользователей.
Решение:

  • Гибкие блокировки 1С от компании «Софтпоинт». С их помощью вы не только оптимизируете множество блокировок (замена табличных блокировок на пользовательские), но и ускорите подборы, поиски и отчеты.
В 1С:Предприятие 8.x:
Информационная система 1С 8.1., 1С 8.2., 1С 8.3. в автоматическом режиме использует избыточные блокировки вида (REPEATABLEREAD, SERIALIZABLE). Это приводит к ухудшению работы пользователей от 100.
Решение:
  • Управляемые блокировки 1С – встроенное средство платформы 1С для более селективной настройки блокировок. Чтобы его использовать, программист должен сам прописать в нужных местах кода специальные операторы, чтобы заблокировать нужные (по его мнению! ) записи в таблицах информационной системы;
  • Гибкие блокировки 1С – технология компании Софтпоинт для замены стандартных блокировок на пользовательские.

Для уменьшения длительности транзакций:

Для любых информационных систем 1С (1С 7.7., 1С 8.1, 1С 8.2, 1С 8.3) как и для других информационных систем применяется схожие подходы:

    Проверка и правильная настройка регламентного обслуживания базы данных (обслуживание файлов, индексов, статистик, базы временных таблиц, настройка Windows и SQLServer);

    Анализ и оптимизация тяжелых запросов 1С и SQL (индексный тюнинг, переписывание запросов);

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

  1. Если Вы хотите самостоятельно разбираться с техническими проблемами производительности 1С (1С 7.7, 1С 8.1, 1С 8.2, 1С 8.3) и других информационных систем , то для Вас уникальный список технических статей в нашем Альманахе (Блокировки и взаимоблокировки, большая нагрузка на CPU и диски, обслуживание баз данных и индексный тюнинг - лишь малая часть технических материалов, которые Вы там найдете).
  2. сли Вы хотите обсудить с нашим экспертом проблемы производительности или заказать решение мониторинг производительности PerfExpert , то оставьте заявку и мы свяжемся с Вами в кратчайшие сроки.