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

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

Администрирование - Производительность и оптимизация (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 156 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 914 28.12.20 11:35 Сейчас в теме
(2) 1) Насколько я знаю, ConnectionTimeout и CommandTimeout это настройки клиента OLE DB провайдера, например, а не настройка на уровне SQL Server сервера.
2) Нужно найти причину блокировки. Точнее почему она удерживается так долго. Кроме причин, описанных в статье, эскалацию блокировок SQL Server до уровня таблицы изменений можно посмотреть.
P.S. Извините, но у меня нет доступа на партнёрский форум =) Может быть ответил бы более предметно, зная что там обсуждается по ссылке =)
4. Cyberhawk 124 17.01.21 13:46 Сейчас в теме
Был произведён рефакторинг архитектуры и кода
В этом самая мякотка. Отказались по итогу от проставления номера методом "ВыбратьИзменения" или нет?
5. zhichkin 914 17.01.21 15:46 Сейчас в теме
(4) Глобально решили отказаться от планов обмена в РИБ. Процесс не простой. Какую систему обмена данными выбрали в качестве замены планов обмена я здесь в этом формате сказать не могу.
Для преодоления сложившейся ситуации в основном точечно была сделана отложенная регистрация изменений, чтобы не тормозить критичные для бизнеса процессы.
От метода "ВыбратьИзменения" не так просто избавиться, особенно средствами 1С. В любом случае это будут костыли.
У меня есть ряд статей по альтернативным планам обмена вариантам. Могу порекомендовать мою последнюю статью на эту тему: DaJet Exchange: обмен данными с 1С (часть 1)
Оставьте свое сообщение

См. также

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

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

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

30.10.2017    30878    MrWonder    42    

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

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

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

09.02.2021    490    pashamak    2    

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

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

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

11.01.2021    6527    user662404_itlexusss    14    

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

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

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

07.10.2020    3786    ivanov660    12    

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

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

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

22.04.2015    41957    Gilev.Vyacheslav    1    

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

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

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

02.10.2020    4489    Nykyanen    16    

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

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

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

14.09.2020    1464    capitan    25    

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

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

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

19.08.2020    14323    YPermitin    30    

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

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

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

22.01.2014    68085    yuraos    112    

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

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

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

17.08.2020    607    ivanov660    0    

SQL для 1С: пишем правильно, красиво, сложно

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

Многие программисты боятся работать с Null, считая, что от этих данных в запросах нужно избавляться. О том, как с помощью Null-полей в запросе решать востребованные в учете задачи по выборке данных, на конференции Infostart Event 2019 Inception рассказал ведущий разработчик ГК WiseAdvice Дмитрий Дудин.

14.08.2020    11845    dmurk    31    

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

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

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

20.07.2020    2241    Филин    7    

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

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

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

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

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

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

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

25.06.2020    3195    ivanov660    13    

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

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

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

24.05.2020    8775    DataReducer    22    

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

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

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

18.05.2020    2378    Aleksey.Bochkov    4    

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

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

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

19.02.2013    56565    Gilev.Vyacheslav    46    

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

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

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

06.04.2020    13275    YPermitin    0    

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

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

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

03.04.2020    5794    feva    15    

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

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

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

31.03.2020    14359    informa1555    35    

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

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

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

11.02.2013    31629    gallam99    19    

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

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

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

31.03.2020    3377    vasilev2015    10    

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

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

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

20.03.2020    5795    vasilev2015    27    

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

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

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

18.03.2020    7819    kaliuzhnyi    44    

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

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

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

03.11.2012    44872    madmpro    32    

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

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

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

17.02.2020    11407    Evil Beaver    13    

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

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

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

23.01.2020    6869    darkdan77    59    

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

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

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

23.01.2020    8835    Kaval88    26    

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

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

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

19.12.2019    13153    ivanov660    20    

Весёлые картинки о работе 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    8104    EugeneSemyonov    11    

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

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

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

14.10.2019    19393    YPermitin    31    

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

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

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

13.09.2019    9546    Repich    5    

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

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

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

10.09.2019    19878    Sloth    30    

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

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

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

09.09.2019    9201    2tvad    17    

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

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

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

19.07.2019    9295    Филин    12    

Ловля блокировок на связке "Microsoft SQL server - 1С"

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

Материал относится к базам данных на связке «1С - MS SQL Server». Один из способов отлова блокировок в бд 1С . Переход к управляемым блокировкам через режим "Автоматический и управляемый".

16.07.2019    10884    fhqhelp    0    

Анти-оптимизация: как мы ускорили запрос в 4 раза, сделав его неоптимальным

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

В этой статье приведен пример неочевидной "оптимизации" запроса, которая противоречит всем правилам, описанным в книгах для подготовки к сертификации "1С:Эксперт по технологическим вопросам", а также преподаваемым на курсах подготовки экспертов.

02.07.2019    11856    igordynets    119    

Ускорение чтения правил обмена в УПП 1.3 в 20 раз!

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

Способ оптимизации чтения правил обмена конвертации данных. Может понадобиться при большом размере правил и высокой периодичности обмена.

27.06.2019    10218    YPermitin    17    

Хотите снизить нагрузку на процессор сервера в 2 раза?

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

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

27.06.2019    10573    Дмитрий74Чел    6    

Непридуманные истории по оптимизации. История 1

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

Первая статья из планируемого цикла об оптимизации приложений на базе 1С. Без теории. Одна практика.

13.06.2019    13095    Repich    117    

Оптимизация: неэффективные запросы

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

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

13.06.2019    6108    slayer-ekb    10    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

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

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    27062    dmurk    146    

За 5 шагов добавляем мониторинг счетчиков производительности серверов MS SQL и 1С

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

Мы расскажем и покажем, как добавить данные счетчиков производительности серверов 1С и MS SQL в нашу базу мониторинга за 15 минут. Приведем список наиболее важных из них, опишем основные особенности.

28.05.2019    21589    ivanov660    11    

Не думать о секундах свысока...

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

Несколько примеров оптимизации типовой конфигурации УТ11. Описанные приемы подходят для многих других конфигураций.

21.05.2019    8265    vasilev2015    21    

Альтернативная стратегия управления блокировками

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

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

20.05.2019    7433    zhichkin    15