Анализ блокировок СУБД: таблица изменений плана обмена 1С

Публикация № 1346977 18.12.20

Администрирование - Производительность и оптимизация (HighLoad)

планы обмена обмен данными РИБ РИБД анализ блокировок технологический журнал ТЖ SQL Server оптимизация производительности

Практический пример анализа типичной проблемы ожидания на блокировках СУБД, возникающих при использовании планов обмена 1С. Сервер СУБД: Microsoft SQL Server.

Данная статья является практическим дополнением теоретической статьи о планах обмена 1С.

Сервер СУБД: Microsoft SQL Server 2014.

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

 

0. Описание задачи.

Периодически обмен между сайтом Интернет-магазина и торговой учётной системой "ложился" неизвестно почему. Изначально обратили на это внимание по причине роста количества входящих сообщений в очереди заказов покупателей. Если количество сообщений превышало настроенный порог, то об этом оповещалась система мониторинга состояния очередей. По началу грешили на зависание фоновых заданий 1С, которые обрабатывали эти очереди. Перезагружали сервер 1С, и это на какое-то время помогало. Затем обратили внимание на возникновение таймаутов ожидания на блокировках СУБД в моменты "падения" обмена. Решили расследовать причины этих блокировок.

 

1. Настройка мониторинга блокировок СУБД.

Для настройки мониторинга блокировок СУБД было выбрано решение от Дмитрия Короткевича Blocking Monitoring Framework, которое он описывает и рекомендует к использованию в своей книге "Expert SQL Server Transactions and Locking". Решение основано на использовании Event Notifications SQL Server, в частности настройке получения blocked process report.

Системная настройкаSQL Server "blocked process threshold" была установлена на 5 секунд, то есть отслеживается любое ожидание на блокировке продолжительностью более 5 секунд.

Установка BMFramework заняла буквально несколько минут. В результате чего на сервере была создана база данных "DBA", которая, сразу же после установки, начала собирать статистику по взаимным блокировкам и ожиданиям на блокировках. Режим мониторинга круглосуточный. Создаваемая при этом нагрузка на сервер фактически незаметна.

Кроме этого была добавлена таблица "tech_log_entries" для сбора событий технологического журнала 1С. Об этом рассказано ниже.

 

 

 

 

 

 

2. Анализ результатов мониторинга.

По результатам мониторинга был получен следующий отчёт "Топ 15 блокировок по хэшу плана запроса".

 

Из этого отчёта, благодаря колонке "BlockedSql" (заблокированное выражение SQL), можно понять, что наиболее частым ожиданием на блокировках является таблица _ReferenceChngR332. Обратившись за помощью к функции платформы "ПолучитьСтруктуруХраненияБазыДанных", удалось выяснить что это таблица изменений справочника "ПартииТоваров".

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

 

В данном случае отчёт уже отфильтрован по таблице _ReferenceChngR332. Если внимательно прочитать статью о планах обмена 1С, то анализ запросов SQL из отчёта подскажет нам, что использовались следующие вызовы методов менеджера планов обмена:

 

1. Запросы при вызове метода ПланыОбмена.ВыбратьИзменения (первая и вторая его части):

UPDATE T1 SET _MessageNo = @P1 ...

и

SELECT T1._IDRRef FROM dbo._ReferenceChngR332 T1 WHERE T1._NodeTRef = 0x0000000B ...

 

2. Запрос при вызове метода ПланыОбмена.УдалитьРегистрациюИзменений.

DELETE FROM T1 FROM dbo._ReferenceChngR332 T1 WHERE T1._IDRRef = @P1 ...

 

3. Запрос при вызове метода ПланыОбмена.ЗарегистрироватьИзменения.

UPDATE T1 SET _MessageNo = CAST(NULL AS NUMERIC(38,8)) FROM dbo._ReferenceChngR332 T1 ...

 

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

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

Запрос корня цепочки это выражение SELECT языка SQL. Однако все мы знаем, что 1С:Предприятие 8.3 работает в режиме управляемых блокировок, а, следовательно, использует режим изоляции транзакций READ COMMITTED SNAPSHOT (RCSI), который не является блокирующим чтением. Блокировки быть не должно. Однако, в данном случае SELECT выполняется в транзакции, которая ранее уже заблокировала читаемые строки. Эта транзакция выглядит следующим образом (подробнее в статье "Планы обмена 1С"):

Небольшой нюанс: в целях оптимизации блокировок и обменов выгрузка объектов 1С выполняется порциями по 3000 объектов или менее (такая настройка на уровне узла плана обмена). Таким образом фильтрация метода "ВыбратьИзменения" производится по массиву, передаваемых в него ссылок. То есть реально добавляется ещё фильтр вида ГДЕ Ссылка В (&МассивСсылок), что в свою очередь накладывает блокировки на записи по этим ссылкам на уровне СУБД: WHERE T1._IDRRef IN (@P1, @P2 ...

 

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

Для отлова нужных событий и контекстов 1С файл настроек технологического журнала 1С был сформирован следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
 <dump create="false"/>
 <log location="D:\tech_logs\" history="48">
  <event>
    <eq property="name" value="dbmssql"/>
    <like property="sql" value="SELECT%"/>
    <like property="sql" value="%_ReferenceChngR332%"/>
    <like property="sql" value="%T1._NodeTRef%"/>
    <like property="sql" value="%0x0000000B%"/>
    <like property="sql" value="%T1._IDRRef%"/>
  </event>
  <event>
    <eq property="name" value="dbmssql"/>
    <like property="sql" value="UPDATE%"/>
    <like property="sql" value="%_ReferenceChngR332%"/>
  </event>
  <event>
    <eq property="name" value="dbmssql"/>
    <like property="sql" value="DELETE%"/>
    <like property="sql" value="%_ReferenceChngR332%"/>
  </event>
  <property name="all"/>
 </log>
</config>

Для настройки файла logcfg.xml использовались рекомендации Юрия Пермитина из его статьи "Мониторинг SQL Server с помощью Extended Events (и не только) для 1С. Как держать руку на пульсе?", а также его же утилита для парсинга технологического журнала YY.TechJournalReaderAssistant. Утилита была доработана для того, чтобы загружать события DBMSSQL в таблицу dbo.tech_log_entries базы данных DBA (см. пункт 2 выше).

Недостатком использования ТЖ 1С явилось то, что каждый час генерировалось несколько десятков мегабайт логов. Однако, учитывая тот факт, что было заранее известно какие шаблоны SQL запросов искать, достаточно было запустить сбор логов ТЖ всего на один час или даже на 10-15 минут.

 

4. Анализ технологического журнала 1С.

В результате анализа записей ТЖ были получены контексты, стэки вызовов, кода 1С. О них я расскажу далее. Перед этим мне хотелось бы обратить внимание на одно открытие, которое я сделал при анализе запросов SQL виновника блокировок. В каких-то случаях они имели такой вид:

SELECT
   T1._IDRRef
FROM
   dbo._ReferenceChngR332 T1
WHERE T1._NodeTRef = 0x0000000B
  AND T1._NodeRRef = @P1
  AND (T1._IDRRef IN (@P2, @P3, @P4))

В других случаях такой:

SELECT
   T1._IDRRef
FROM
   dbo._ReferenceChngR332 T1
WHERE T1._NodeTRef = 0x0000000B
  AND T1._NodeRRef = @P1
  AND (T1._IDRRef IN
         (SELECT CASE WHEN T2._INVALUELISTTRef = 0x0000002A
                      THEN T2._INVALUELISTRRef ELSE @P2 END AS INVALUELISTRRef
          FROM
             #tt7 T2 WITH(NOLOCK)
          WHERE
             CASE WHEN T2._INVALUELISTTRef = 0x0000002A
                  THEN T2._INVALUELISTRRef ELSE @P3 END IS NOT NULL))

Разница заключается в использовании временной таблицы для передачи фильтра в виде массива ссылок в метод менеджера планов обмена "ВыбратьИзменения". Это говорит о том, что в каких-то случаях 1С считает, что массив достаточно большой, чтобы начать использовать временную таблицу. Экспериментальным путём удалось выяснить, что количество ссылок в массиве, начиная с которого создаётся временная таблица, равно 129. Создание временной таблицы означает нагрузку на tempdb и дисковую систему сервера СУБД. Это может влиять на продолжительность выполнения всего метода "ВыбратьИзменения" (транзакции СУБД), особенно учитывая тот факт, что в нём выполняются последовательно сначала UPDATE, а только затем SELECT.

Поиск контекстов 1С виновника и жертв ожидания на блокировках выполнялся при помощи таблицы tech_log_entries базы данных DBA, описанных выше.

 

5. Виновник блокировок.

ПланыОбмена.ВыбратьИзменения

Виновник блокировок имеет следующий стэк вызовов. Ясно, что это выгрузка данных РИБ.

ОбщийМодуль.ДлительныеОперации.Модуль : 652 : ВыполнитьПроцедуру(ИмяПроцедуры, ПараметрыПроцедуры);
ОбщийМодуль.ДлительныеОперации.Модуль : 661 : ОбщегоНазначения.ВыполнитьМетод(ИмяПроцедуры, ПараметрыПроцедуры);
ОбщийМодуль.ОбщегоНазначения.Модуль : 4762 : Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
	: 1 : ОбменДаннымиРИБ.ВыгрузитьИзмененныеОбъекты(Параметры[0],Параметры[1])
ОбщийМодуль.ОбменДаннымиРИБ.Модуль : 129 : Пакет = СформироватьПакетОбмена(НастройкиОбмена, СписокМетаданных);
ОбщийМодуль.ОбменДаннымиРИБ.Модуль : 372 : Возврат РаспределитьПакетПоТипамОбъектов(Пакет, НастройкиОбмена);
ОбщийМодуль.ОбменДаннымиРИБ.Модуль : 1021 : Выборка = ПланыОбмена.ВыбратьИзменения(УзелОбмена, НомерСообщения, Фильтр);

 

6. Жертвы блокировок.

 

6.1. Конкурирующая выгрузка данных.

ПланыОбмена.ВыбратьИзменения

ОбщийМодуль.ДлительныеОперации.Модуль : 652 : ВыполнитьПроцедуру(ИмяПроцедуры, ПараметрыПроцедуры);
ОбщийМодуль.ДлительныеОперации.Модуль : 661 : ОбщегоНазначения.ВыполнитьМетод(ИмяПроцедуры, ПараметрыПроцедуры);
ОбщийМодуль.ОбщегоНазначения.Модуль : 4762 : Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
	: 1 : ОбменДаннымиРИБ.ВыгрузитьИзмененныеОбъекты(Параметры[0],Параметры[1])
ОбщийМодуль.ОбменДаннымиРИБ.Модуль : 129 : Пакет = СформироватьПакетОбмена(НастройкиОбмена, СписокМетаданных);
ОбщийМодуль.ОбменДаннымиРИБ.Модуль : 372 : Возврат РаспределитьПакетПоТипамОбъектов(Пакет, НастройкиОбмена);
ОбщийМодуль.ОбменДаннымиРИБ.Модуль : 1021 : Выборка = ПланыОбмена.ВыбратьИзменения(УзелОбмена, НомерСообщения, Фильтр);

Код ровно такой же, как в пункте 5 "Виновник блокировок". Как выяснилось, регламентное задание по выгрузке данных запускалось несколько раз. Таким образом создавались конкурирующие за одни и те же объекты конфигурации 1С фоновые задания.

 

6.2. Удаление регистрации изменений.

ПланыОбмена.УдалитьРегистрациюИзменений

ОбщийМодуль.ДлительныеОперации.Модуль : 652 : ВыполнитьПроцедуру(ИмяПроцедуры, ПараметрыПроцедуры);
ОбщийМодуль.ДлительныеОперации.Модуль : 661 : ОбщегоНазначения.ВыполнитьМетод(ИмяПроцедуры, ПараметрыПроцедуры);
ОбщийМодуль.ОбщегоНазначения.Модуль : 4762 : Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
	: 1 : ОбменДаннымиРИБ.ВыгрузитьИзмененныеОбъекты(Параметры[0],Параметры[1])
ОбщийМодуль.ОбменДаннымиРИБ.Модуль : 155 : ЗафиксироватьЗагрузкуОбъекта(ВыгруженныеОбъекты, УзелОбмена);
ОбщийМодуль.ОбменДаннымиРИБ.Модуль : 1882 : ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Объект);

Кроме этого выяснилось, что после успешной выгрузки объекта 1С выполнялось удаление ссылки на такой объект из плана обмена, что создавало дополнительную конкуренцию за одни и те же записи таблиц изменений. Объяснением такого поведения системы является то, что выгрузка выполняется при помощи http сервисов 1С, квитирование выгрузки не выполняется - достаточно получить код ответа HTTP 200 от принимающего узла обмена.

Данная жертва является косвенным последствием порождения жертвы из пункта 6.1.

 

6.3. Регистрация новых изменений.

ПланыОбмена.ЗарегистрироватьИзменения

ОбщийМодуль.ОбменИнтернетМагазин.Модуль : 92 : ЗагрузитьЗаказыКлиентов(ДанныеСессии);
ОбщийМодуль.Заказы.Модуль : 1306 : ЗаказКлиента.Записать(РежимЗаписиДокумента.Проведение);
ОбщийМодуль.ОбменДаннымиМагазин.Модуль : 12 :
    ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюДокумента(ИмяПланаОбмена, Источник, Отказ, РежимЗаписи, РежимПроведения);
ОбщийМодуль.ОбменДаннымиСобытия.Модуль : 24 :
    ЗарегистрироватьИзменениеОбъекта(ИмяПланаОбмена, Источник, Отказ, ДополнительныеПараметры);
ОбщийМодуль.ОбменДаннымиСобытия.Модуль : 1033 :
    ВыполнитьПравилаРегистрацииОбъектовДляПланаОбмена(МассивУзловРезультат, Объект, ИмяПланаОбмена, ДополнительныеПараметры);
ОбщийМодуль.ОбменДаннымиСобытия.Модуль : 1324 :
    ВыполнитьПравилаРегистрацииОбъектовДляПланаОбменаПопыткаИсключение(МассивУзловРезультат, Объект, ИмяПланаОбмена, ДополнительныеПараметры);
ОбщийМодуль.ОбменДаннымиСобытия.Модуль : 1431 :
    ОпределитьПолучателейПоУсловию(МассивУзловРезультат, ПРО, Объект, ИмяПланаОбмена, ДополнительныеПараметры);
ОбщийМодуль.ОбменДаннымиСобытия.Модуль : 1675 :
    ВыполнитьОбработчикПРОПослеОбработки(ПРО, Отказ, Объект, ОбъектМетаданных, Получатели, Выгрузка);
ОбщийМодуль.ОбменДаннымиСобытия.Модуль : 2531 : Выполнить(ПРО.ПослеОбработки);
	: 31 : ПланыОбмена.ЗарегистрироватьИзменения(Получатели, Партия);

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

 

7. Заключение.

Таким образом была найдена причина возникновения ожиданий и даже ошибок таймаута на блокировках СУБД при выполнении обменов с Интернет-магазином. Выяснилось, что при загрузке заказов клиентов выполнялись правила регистрации для справочника "ПартииТоваров" и, как следствие, возникал конфликт с текущей выгрузкой совпадающих партий товаров в узлы обмена РИБ.

В результате полученной информации архитектор торговой учётной системы получил конкретные знания о причинах возникающих проблем. Был произведён рефакторинг архитектуры и кода. Проблему "падения" обменов с Интернет-магазином удалось решить в кратчайшие сроки.

Кроме этого попутно была выявлена скрытая проблема параллельного запуска фоновых заданий по выгрузке данных РИБ. Появился повод подумать о реорганизации выполнения правил регистрации в обмен для других объектов системы. Задумались об удалении выгруженных объектов из таблиц изменений, о квитировании и гарантировании ...

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. buganov 178 18.12.20 14:03 Сейчас в теме
Ну, найти блокировки достаточно легко. Делитесь рецептами, в них самая клюква
2. trio-tlt 25.12.20 20:15 Сейчас в теме
Столкнулся с такой же проблемой на базе с довольно интенсивном обмене https://partners.v8.1c.ru/forum/message/1959569?onlyMyThemesInput=true#m_1959569

Возникло несколько вопросов:
1) Можно каким-то образом изменить время ожидания блокировки на уровне SQL сервера?
2) Сейчас наблюдаю, что и 1С сервер и sql сервер по нагрузке на железо не сильно напрягаются, а блокировки вида
ПланыОбмена.ВыбратьИзменения(Получатель.Ссылка, Получатель.НомерОтправленного + 1);
по причине:
Конфликт блокировок при выполнении транзакции:
Microsoft SQL Server Native Client 11.0: Превышено время ожидания запроса на блокировку.
HRESULT=80040E31, SQLSrvr: SQLSTATE=HYT00, state=33, Severity=10, native=1222, line=1
продолжают появляться
В какую сторону можно ещ епосмотреть?
3. zhichkin 1102 28.12.20 11:35 Сейчас в теме
(2) 1) Насколько я знаю, ConnectionTimeout и CommandTimeout это настройки клиента OLE DB провайдера, например, а не настройка на уровне SQL Server сервера.
2) Нужно найти причину блокировки. Точнее почему она удерживается так долго. Кроме причин, описанных в статье, эскалацию блокировок SQL Server до уровня таблицы изменений можно посмотреть.
P.S. Извините, но у меня нет доступа на партнёрский форум =) Может быть ответил бы более предметно, зная что там обсуждается по ссылке =)
6. buganov 178 10.05.21 10:34 Сейчас в теме
1) Можно каким-то образом изменить время ожидания блокиров[/IS-QUOTE]
Зачем на уровне SQL сервера, если время таймаута передается из 1С?
Конфигуратор - Администрирование - Параметры информационной базы - Время ожидания блокировки в секундах.

По дефолту 20 сек, что более, чем достаточно. Если увеличивать, то будут тупо простои вхолостую, уж лучше провести исследование в базе, обнаружить и постараться устранить блокировки, пусть и радикальными методами, в том числе изменением архитектуры.
4. Cyberhawk 129 17.01.21 13:46 Сейчас в теме
Был произведён рефакторинг архитектуры и кода
В этом самая мякотка. Отказались по итогу от проставления номера методом "ВыбратьИзменения" или нет?
5. zhichkin 1102 17.01.21 15:46 Сейчас в теме
(4) Глобально решили отказаться от планов обмена в РИБ. Процесс не простой. Какую систему обмена данными выбрали в качестве замены планов обмена я здесь в этом формате сказать не могу.
Для преодоления сложившейся ситуации в основном точечно была сделана отложенная регистрация изменений, чтобы не тормозить критичные для бизнеса процессы.
От метода "ВыбратьИзменения" не так просто избавиться, особенно средствами 1С. В любом случае это будут костыли.
У меня есть ряд статей по альтернативным планам обмена вариантам. Могу порекомендовать мою последнюю статью на эту тему: DaJet Exchange: обмен данными с 1С (часть 1)
7. androidT1C 73 04.06.21 17:13 Сейчас в теме
Хорошо написано. Но то, что планы обмена парализуют работу, известно с незапамятных времен.
Оставьте свое сообщение

См. также

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

Технологический журнал v8 Бесплатно (free)

Все из тех, кто пробовали сдать на сертификат "Эксперт по технологическим вопросам 1С", сталкивались с методикой ЦКТП - разбор файлов технологического журнала при помощи консоли bash. Я, в свою очередь,внёс изменения в данную методику. Мне хотелось достичь более понятного вида и сфокусироваться на Perl, в качестве предпочтительного средства обработки файлов ТЖ. Вот что из этого вышло:

30.10.2017    32366    MrWonder    42    

Оптимизация проведения документов списания партий в УПП 1.3

Производительность и оптимизация (HighLoad) v8 УТ10 УПП1 Бесплатно (free)

Почти в каждой конфигурации УПП 1.3 (возможно, и в УТ 10.3) есть медленный запрос, тормозящий проведение документа списания. Данная публикация раскрывает места вызова данного запроса и приводит пример оптимизации. Пример показывает результаты проведения документа «Реализация товаров и услуг», но метод работает и для других документов списания партий.

09.09.2021    370    info1i    4    

Смотрим запросы 1С через Microsoft SQL Profiler по следам ошибок разработчиков, приводящих к проблемам производительности

Производительность и оптимизация (HighLoad) Рефакторинг и качество кода Технологический журнал v8 Бесплатно (free)

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

07.09.2021    2488    ivanov660    19    

Адекватный параллелизм в 1С

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Параллелизм ускоряет выполнение тяжелых регламентных операций на СУБД, но может негативно влиять на работу многопользовательских учетных систем. О том, как анализировать влияние параллелизма и настраивать его для MS SQL и PostgreSQL, рассказал ведущий разработчик компании ООО МКК «Ваш Инвестор» Вадим Фоминых.

13.08.2021    2635    Shmell    7    

Долго открывается конфигуратор Промо

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

В ОС Windows Server 2012 бывает полезно выключать службу Dynamic Fair Share Scheduling (DFSS позволяет балансировать и распределять ресурсы между пользователями), чтобы повысить производительность 1С:Предприятие 8 в ряде случаев.

22.04.2015    43567    Gilev.Vyacheslav    1    

Снова про анализ технологического журнала с помощью PowerShell

Технологический журнал v8 Бесплатно (free)

Универсальная методика анализа технологического журнала (далее - ТЖ) с помощью Powershell без применения алгоритмов программирования.

05.08.2021    1274    cdiamond    0    

Распространенные ошибки разработчиков, приводящие к проблемам производительности

Производительность и оптимизация (HighLoad) Рефакторинг и качество кода v8 Бесплатно (free)

Рассмотрим примеры ошибок, анализ, исправление и мероприятия по недопущению подобного в будущем. Всего будет 18 примеров.

02.08.2021    8004    ivanov660    77    

Разбор причины ошибки "Нарушение целостности чтения объекта базы данных из-за параллельного изменения объекта другим сеансом"

Технологический журнал v8 1cv8.cf Бесплатно (free)

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

25.06.2021    841    pashamak    0    

Видеодемонстрация применения Теста-центра для нагрузочного тестирования конфигураций Промо

Нагрузочное тестирование v8 1cv8.cf Бесплатно (free)

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

16.09.2012    36287    Aleksey.Bochkov    29    

Parameter sniffing и генерация планов для разработчиков 1С

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Особенности генерации планов запросов. Статья написана по мотивам вебинара Виктора Богачева.

01.06.2021    7042    vasilev2015    15    

Ускорение реструктуризации больших таблиц. Мой вариант

Производительность и оптимизация (HighLoad) Администрирование СУБД BigData v8 1cv8.cf Бесплатно (free)

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

28.04.2021    1189    buganov    0    

Поиск причин блокировок СУБД

Производительность и оптимизация (HighLoad) v8 v8::blocking 1cv8.cf Бесплатно (free)

Расследование блокировок СУБД. Статья написана по мотивам вебинара Виктора Богачева.

28.04.2021    5315    vasilev2015    13    

Как можно "положить" SQL сервер с помощью обычной консоли запросов 1С Промо

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Описано как из 1С, с помощью безобидной на первый взгляд обработки, можно сделать неработоспособным SQL сервер. Предложены меры, позволяющие избежать этого.

22.01.2014    68878    yuraos    112    

Тонкости эксплуатации, плюшки и особенности Postgres Pro Enterprise

Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Бесплатно (free)

В ходе онлайн-встречи INFOSTART MEETUP Novosibirsk Руководитель ИТ из компании ИнфоСофт Антон Дорошкевич поделился с коллегами тонкостями и опытом работы с Postgresql для 1С. 

22.04.2021    2039    a.doroshkevich    4    

Решение нестандартных проблем производительности на реальных примерах

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

На екатеринбургском Infostart Meetup выступил с докладом архитектор ИС центра разработки ФТО Александр Криулин. Он поделился с коллегами кейсами нестандартных проблем производительности и рассказал о способах их решения.

24.03.2021    4601    AlexKriulin    37    

Соединение вложенными циклами

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Nested loops и отсутствующие индексы. Статья написана по мотивам вебинара Виктора Богачева.

12.03.2021    3388    vasilev2015    22    

Ускоряем списание партий УПП 1.2 / 1.3 / УТ 10.3 Промо

Производительность и оптимизация (HighLoad) v8 УТ10 УПП1 Бесплатно (free)

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

21.06.2013    58955    Антон Ширяев    117    

Долгое воспроизведение звука по RDP с удаленной машины

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

При воспроизведении короткого звука в 38 Кб, сигнализирующего об успешном сканировании, порою происходило подвисание примерно в 5 секунд.

09.02.2021    876    pashamak    2    

Highload-оптимизация 1С: теория и практика на примере консолидированной отчетности группы "Магнит" и розничной аптечной сети "Магнит"

Производительность и оптимизация (HighLoad) BigData v8 Бесплатно (free)

Тема оптимизации 1С на больших данных бесконечная и всеобъемлющая, поскольку на производительность влияет целый ряд факторов – количество пользователей, данных, транзакций, неоптимальные запросы и т.д. Об инструментах для локализации проблем производительности и практических кейсах оптимизации рассказал Алексей Олейник, руководитель сектора автоматизации отчетности МСФО компании «Информационные технологии Магнит».

11.01.2021    25979    user662404_itlexusss    14    

Анализ проблем производительности по динамике мониторинга RAS 1C

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

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

07.10.2020    4625    ivanov660    13    

Сравнение скорости работы 1C+MSSQL и файлового варианта Промо

Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Бесплатно (free)

На форумах постоянно задается один и тот же вопрос: почему 1C+MSSQL медленнее обрабатывает запросы чем файловая? Затем обычно идет «флуд» на несколько десятков страниц. Есть два популярных «течения» в таких форумах — одни говорят что для клиент-серверного варианта это нормально, файловый вариант всегда должен работать быстрее, другие говорят что 1С плохо работает с субд. В результате «баталий и выяснения отношений» на форумах люди расходятся при своих мнения.

19.02.2013    61077    Gilev.Vyacheslav    46    

Ускорение медленной работы строк в 1С на примере 1С:Документооборот КОРП

Производительность и оптимизация (HighLoad) v8 ДО Бесплатно (free)

Если у вас в 1С:Документооборот КОРП 2.1.11.5 (часть более старых и новых конфигураций): 1) Долго отправляется почта в формате HTML; 2) Медленно открывается документы внутренние / входящие / исходящие; 3) Тормозит область просмотра или открытие задач. Тогда вам сюда.

02.10.2020    5217    Nykyanen    16    

Тест скорости работы мобильной платформы 1С

Мобильная разработка Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

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

14.09.2020    1813    capitan    25    

Описание почти всех событий технологического журнала

Технологический журнал v8 Бесплатно (free)

Краткое описание событий технологического журнала с примерами. Все для быстрого старта.

19.08.2020    26145    YPermitin    38    

Параллельные вычисления в 1С 8 Промо

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Решение позволяет ускорять выполнение запросов в 1С 8 в отчетах путем их параллельного выполнения в разных потоках.

11.02.2013    36525    gallam99    19    

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

Технологический журнал v8 1cv8.cf Бесплатно (free)

Корректируем классификацию ошибок ТЖ в процессе работы для конфигурации мониторинг производительности

17.08.2020    875    ivanov660    0    

Нестандартные блокировки при работе с OLAP-нагрузкой

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Если выполнение отчета мешает работе других пользователей и провоцирует блокировки, даже с учетом «грязного чтения» – ситуация кажется парадоксальной. О том, как расследовать такие проблемы, на конференции Infostart Event 2019 Inception рассказали ведущий программист торгового дома «Петрович» Станислав Щербаков и специалист по производительности компании «СофтПоинт» Александр Денисов.

20.07.2020    2620    Филин    7    

Автоматическая классификация ошибок технологического журнала

Технологический журнал v8 1cv8.cf Бесплатно (free)

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

25.06.2020    4225    ivanov660    13    

Ubuntu vs CentOS vs Win2k8 vs Debian: производительность PostgreSQL Промо

Статистика базы данных Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Хотя интернет уже переполнен статьями о "правильной" настройке связки PostgreSQL и 1C 8.2, для подводных камней всегда остается место. При сравнении производительности СУБД PostgreSQL на разных ОС, показатели различаются в разы. Самую большую обиду принесла любимая Ubuntu (человечность). После долгих дней и ночей проведенных за консолью этой ОС, она разочаровала окончательно. Тормоза PostgreSQL в Ubuntu Server. Что с ними делать? Сколько раз можно наступать на грабли?

03.11.2012    45232    madmpro    32    

Выявляем и оптимизируем ресурсоемкие запросы 1С:Предприятия

Производительность и оптимизация (HighLoad) Администрирование СУБД Технологический журнал Структура метаданных v8::Запросы Бесплатно (free)

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

24.05.2020    10871    DataReducer    22    

[SQL Server] Использование trace flag 9592 для сжатия траффика в кластере AlwaysOn

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

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

18.05.2020    2602    Aleksey.Bochkov    4    

Эти занимательные временные таблицы

Производительность и оптимизация (HighLoad) Администрирование СУБД v8 Бесплатно (free)

Кое-что интересное о временных таблицах и работе платформы 1С с ними.

06.04.2020    15651    YPermitin    0    

Оптимизация запросов 1С посредством индексации временных таблиц. Миф? Тестируем, смотрим, считаем

Производительность и оптимизация (HighLoad) Практика программирования v8 Бесплатно (free)

Появилось свободное время, решил проверить на работе индексацию таблиц. Решил поделиться с Вами результатами исследования. Давайте порассуждаем на эту тему? Часто ли вы пользуетесь индексацией в запросах? Платформа 8.3.16.1224

03.04.2020    8321    feva    15    

Как я собрал для себя высокопроизводительный и бесплатный облачный бекенд для 1С на PosgreSQL + PostgREST

Производительность и оптимизация (HighLoad) WEB Интеграция Мобильная разработка Администрирование веб-серверов v8 Бесплатно (free)

В этой статье я расскажу о проблемах бека для мобильных приложений или другого фронта, который требует производительности, быстрой реакции и отказоустойчивости, и как я решил это благодаря opensource проекту PostgREST и СУБД Postgre SQL 12. Проведу простой тест производительности для сравнения 1С с данным решением. Это может быть полезно всем, кто разрабатывает мобильные приложения либо фронтсайд-приложения для 1С на чем угодно - на мобильной платформе или на нативном языке или на Simple UI. И также обзор новых функций SimpleUI для связи с этим бекендом.

31.03.2020    15690    informa1555    35    

Многострочный контекст событий

Производительность и оптимизация (HighLoad) Технологический журнал v8 Бесплатно (free)

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

31.03.2020    3775    vasilev2015    11    

Анализ взаимоблокировок

Производительность и оптимизация (HighLoad) Технологический журнал v8 v8::blocking Бесплатно (free)

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

20.03.2020    6851    vasilev2015    27    

Многопоточность

Практика программирования Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Увеличиваем скорость загрузки данных в 20 раз. Как следует использовать многопоточность и готовый модуль для внедрения.

18.03.2020    8637    kaliuzhnyi    45    

Планы запросов - это просто! Разбор оптимизаций запросов PostgreSQL на живых примерах

Производительность и оптимизация (HighLoad) v8::Запросы Бесплатно (free)

Проблема быстродействия 1С напрямую зависит от производительности запросов. Но как понять механику работы СУБД с помощью плана запроса? Андрей Овсянкин и Никита Грызлов на конференции Infostart Event 2019 Inception подробно рассмотрели алгоритм работы с планом запроса СУБД PostgreSQL, полученным из технологического журнала, и рассказали, на что обратить внимание, чтобы оптимизировать работу системы.

17.02.2020    14160    Evil Beaver    13    

Оптимизатор запросов. Вторая часть

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

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

23.01.2020    7329    darkdan77    59    

Улучшаем производительность 1С. Рекомендации

Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Бесплатно (free)

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

23.01.2020    13507    Kaval88    26    

Мониторим производительность с помощью 1С RAS

Инструментарий разработчика Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Подключаемся и анализируем данные через 1С RAS. Необходимо выполнить 5 пунктов и серьезный инструмент мониторинга будет у вас в руках.

19.12.2019    15018    ivanov660    44    

Весёлые картинки о работе Performance Monitor на Windows Server 2016 Std по мотивам расследования потери производительности на базе 1С

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Данная публикация посвящена одной особенности Performance Monitor на Windows Server 2016 Std. Как понимать графики Performance Monitor на Windows Server 2016 Std при расследовании проблем в работе 1С.

22.10.2019    8703    EugeneSemyonov    11    

Обслуживание баз данных. Не так просто, как кажется

Производительность и оптимизация (HighLoad) Администрирование СУБД v8 1cv8.cf Бесплатно (free)

Считаете, что обслуживание индексов и статистик дело простое? Что ж, это не всегда так.

14.10.2019    21749    YPermitin    31    

Мониторинг высоконагруженной системы

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Высоконагруженной системе (более 8000 клиентских сессий) мониторинг необходим. Про опыт использования инструментов для мониторинга – самописной системы информирования, написанной на C#, и конфигурации «Центр контроля качества» в связке с системой отображения данных Grafana, на конференции Infostart Event 2018 Education рассказал Олег Репников.

13.09.2019    10062    Repich    6    

Использование Zabbix для сбора информации о серверных вызовах и управляемых блокировках с сервера 1С Предприятия, работающего на платформе GNU/Linux

Администрирование данных 1С Zabbix v8 Бесплатно (free)

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

10.09.2019    22038    Sloth    48    

Хранение файлов - как уменьшить размер базы данных

Чистка базы Производительность и оптимизация (HighLoad) Практика программирования Разработка v8 Россия Бесплатно (free)

Хранение файлов в базе 1С можно оптимизировать для уменьшения размера хранимых данных.

09.09.2019    9833    2tvad    17    

Неочевидные проблемы производительности: важность системного подхода при анализе

Производительность и оптимизация (HighLoad) v8 Россия Бесплатно (free)

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

19.07.2019    9623    Филин    12