Аудит в ТД Шкуренко

 

Особенности взаимодействия до начала основных работ

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

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

 

ПУНКТ 7.1 РЕКОМЕНДАЦИЯ: УСТРАНЕНИЕ ВОЗНИКАЮЩИХ ИЗБЫТОЧНЫХ БЛОКИРОВОК ЗА СЧЕТ ВНЕДРЕНИЯ МЕХАНИЗМА УПРАВЛЯЕМЫХ БЛОКИРОВОК.

В исследуемой конфигурации используется режим управления блокировок «Автоматический».

Режим управления блокировками

 

Рисунок №26. Режимы в общих свойствах исследуемой конфигурации.

Продемонстриуем негативное влияние особенностей данного режиме на собранных данных о событиях, происходящих в исследуемой базе.

На скриншоте отражены контексты возникновения блокировок на ожидание:

количество ожиданий на блокировках

Рисунок № 27 Мы видим отсортированные по месту кода жертв и количеству возникших ожиданий блокировок.

Логи собраны с помощью инструментов http://www.gilev.ru/latch/ . Описание использования сервис и параметры  доступа см.  разделе 2.3узкие места

Рисунок № 28 Отражены таблицы базы данных, которые являются наиболее конкурентными за операции блокирования данных.

пример блокировки 1с

 

Рисунок № 29 Данные блокировки, устанавливаемые процессом 1 и процессом 2 возникают при работе в автоматическом режиме. Характерным признаком таких блокировок является значение поля режим = IX, IS, SIX (Блокировка с намерением) и указание в запросе на уровень изоляции  (SERIALIZABLE).

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

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

Приведем описание от Microsoft

http://msdn.microsoft.com/ru-ru/library/ms173763.aspx

SERIALIZABLE

Указывает следующее.

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

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

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

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

 

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

 

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

 

После активизации данного режима блокировки с характерным признаком — значение режима = «Range…» исчезнут.

взаимная блокировка на диапазонах

Рисунок № 30. Описание ситуации взаимной блокировки. 

Процесс 2: 10.07.2013 в 14:42:16 пользователь СКРЫТО1 проводит документ «Корректировка заказа покупателя», который блокирует таблицу Регистра сведений 12483 «Дефицитные товары по заказам» в диапазоне S-U.

Процесс 1: 10.07.2013 в 14:42:22 пользователь СКРЫТО2 проводит документ «Закрытие заказов покупателям»,  который блокирует таблицу Регистра накопления 10219 – «Расчеты с контрагентами» в диапазоне S-S.

Параллельно процесс 2 в ходе проведения документа пытается заблокировать таблицу Регистра накопления 10219 – «Расчеты с контрагентами» в диапазоне I-N, который не совместим с S-S, и становится в ожидание.

Процесс 1 далее пытается установить перекрестную блокировку на таблицу Регистра сведений 12483 «Дефицитные товары по заказам» в диапазоне S-U и так же становится в ожидание, что вызывает взаимную блокировку ресурсов.

Логи собраны с помощью инструментов http://www.gilev.ru/deadlock/ . Описание использования сервис и параметры  доступа см.  разделе 2.3

 

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

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

КОММЕРЧЕСКОЕ ПРЕДЛОЖЕНИЕ. Согласно публичной информации мы выполняем перевод конфигураций на управляемые блокировки согласно текущим ценам в прайс-листе http://www.gilev.ru/price/.

См. http://www.gilev.ru/ctrllock/

 

ПУНКТ 7.2 РЕКОМЕНДАЦИЯ: ПЕРЕВЕСТИ В КОНФИГУРАЦИЮ БЕЗ РЕЖИМА СОВМЕСТИМОСТИ

Рисунок №26. Режимы в общих свойствах исследуемой конфигурации.

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

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

Таблица с константами

Рисунок №31. Физическое размещение констант конфигурации.

Это означает, что при блокировке одной константы будут заблокированы все константы. СУБД накладывает блокировку на ВСЮ единственную СТРОКУ таблицы, т.е. на все константы.

Однако в последних релизах платформы хранение констант изменено. Теперь каждая константа — это отдельная таблица.

Изменить формат хранения можно путем «реструкторизации» в Тестировании и Исправлении конфигуратора.

 

—————————————————————————————————————-

ИЗ ПРИЛОЖЕНИЯ №2 ПОВТОРНЫЙ АУДИТ ПО РЕЗУЛЬТАТАМ ВЫПОЛНЕНИЯ РЕКОМЕНДАЦИЙ

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

ранжирование блокировок 1с

сводный результат

После перевода конфигурации в режим управляемых блокировок  количество и время ожиданий сократились в десятки раз. А количество отказов системы с ошибкой «Конфликт блокировок»  зафиксировано всего 44 случая (большая часть из которых произошла до применения изменений в конфигурации) по сравнению с (здесь указана дата первого обследования) когда таких отказов было 5399 (т.е. примерно в 120 раз больше)

Рекомендации по устранению оставшихся блокировок приведены в приложении №3.

Конец фрагмента.

—————————————————————————————————————-

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

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

Отзыв ТД Шкуренко

Проект сделан с использованием технологий http://www.gilev.ru/online/

Стоимость работ смотрите в работах здесь

Другие отзывы о проделанных нами работах можно посмотреть здесь http://www.gilev.ru/results/