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

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

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

обмен конвертация данных 2.0 оптимизация правила обмена УПП

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

В самом начале

Всем известно решение 1С:Конвертация данных 2.0 (да и 3.0, конечно, тоже), с помощью которого можно гибко настраивать правила обмена данными между различными решениями на базе платформы 1С. Несмотря на то, что уже вышла версия КД 3.0, предыдущая версия до сих пор остается часто используемым инструментом, ведь работать с ней проще, да и решаемые задачи и подходы к интеграции у обеих версий разные. А сколько еще решений на поддержке с обменом через КД 2.0!

 
 Это информация из старого блога DevelPlatform.ru

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

В память об УПП! Ура, товарищи!

Если УПП для Вас - это настоящее, то может быть интересна публикация о внутреннем устройстве прав доступа и настроек пользователей в УПП.

Начнем

Работали ли Вы когда-нибудь с большими конфигурациями, содержащими несколько сотен объектов метаданных? А были ли у Вас на поддержке правила обмена, которые описывали конвертацию всех эти объектов? Вне зависимости от ответов "Да" или "Нет" я думаю Вы понимаете, что работа с такими объемными правилами может вызвать затруднения, причем не только на этапе их модификации, но и на этапе непосредственного обмена данными. Чем больше размером файл правил, тем больше времени нужно чтобы прочитать все находящиеся в нем правила и подготовиться выполнять обмен.

Сегодня в статье пойдет речь как-раз о решении подобной проблемы. Мы оптимизируем чтение правил обмена на примере конфигурации "Управление производственным предприятием"  (УПП) редакции 1.3. Из названия статьи уже можно понять на сколько значительным!

Суть проблемы

Две конфигурации УПП, объемные правила конвертации, односторонний обмен между центральной и периферийной базой, и периодичность обмена раз в 5 минут - это все что нам дано в этой задаче. Ах да, спросите для чего нужно так часто выполнять обмен? Причин может быть много: нужно оперативно смотреть информацию в центральной базе, нужно выполнять оперативный контроль работы и много другое. Для нас это и не важно сейчас. Есть задача сделать такой обмен - так давайте сделаем!

Размер файла XML правил обмена занимает порядка 120 мегабайт. Когда из периферийной базы запускается процедура выгрузки данных, то на этап "Чтение правил конвертации" тратится порядка 5 минут. По условиям задачи обмен должен выполнятся каждые 5 минут, а не чтение правил! Значит придется решить эту проблему. Сначала проанализируем как сейчас выполняется чтение правил обмена.

В конфигурации есть обработка "ОбменДаннымиXML" которая выполняет все основные функции по выгрузке, загрузке, чтению правил обмена и т.д. В модуле объекта обработки за чтение правил обмена отвечает процедура "ЗагрузитьПравилаОбмена":

// Осуществляет загрузку правил обмена в соответствии с форматом
//
// Параметры:
//  Источник       - Объект, из которого осуществляется загрузка правил обмена;
//  ТипИсточника   - Строка, указывающая тип источника: "XMLФайл", "ЧтениеXML", "Строка"
// 
Процедура ЗагрузитьПравилаОбмена(Источник="", ТипИсточника="XMLФайл", СтрокаСообщенияОбОшибке = "", 
	ЗагружатьТолькоЗаголовокПравил = Ложь) Экспорт

	#Если Клиент Тогда
	Состояние("Выполняется загрузка правил обмена ...");
	#КонецЕсли

	// ...

КонецПроцедуры

В этой процедуре читается XML-файл правил и заполняются служебные переменные, такие как:

  • реквизит обработки "ТаблицаПравилКонвертации", в которой сохраняются все правила конвертации для дальнейшего использования. Большая часть времени при чтении правил затрачивается именно на заполнение этой таблицы.
  • глобальная переменная "Конвертация", в которой сохраняется структура свойств конвертации (имя, ID, обработчики событий и др.)
  • глобальная переменные "Менеджеры" и "МенеджерыДляПлановОбмена", которые хранят соответствие, содержащее поля Имя, ИмяТипа, ТипСсылкиСтрокой, Менеджер, ОбъектМД, ПКО.
  • переменная обработки "Правила", в которой сохраняются ссылки на ПКО.
  • и много другое.

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

Пока ПравилаОбмена.Прочитать() Цикл
	
	ИмяУзла = ПравилаОбмена.ЛокальноеИмя;
       		
	// Реквизиты конвертации
	Если ИмяУзла = "ВерсияФормата" Тогда
		// ...
		
	// События конвертации
		
	ИначеЕсли ИмяУзла = "" Тогда
	
	ИначеЕсли ИмяУзла = "ПослеЗагрузкиПравилОбмена" Тогда
		// ..
		
	// Правила
		
	ИначеЕсли ИмяУзла = "ПравилаВыгрузкиДанных" Тогда
		// ...
		
	// Алгоритмы / Запросы / Обработки
		
	ИначеЕсли ИмяУзла = "Алгоритмы" Тогда
		// ...

	// Выход
	ИначеЕсли (ИмяУзла = "ПравилаОбмена") 
		И (ПравилаОбмена.ТипУзла = одТипУзлаXML_КонецЭлемента) Тогда
		// ...
		
КонецЦикла;

Для более подробной информации Вы можете посмотреть содержимое модуля обработки "ОбменДаннымиXML" в составе конфигурации.

И так, при каждом запуске обмена выполняются одни и те же действия по чтению правил и инициализации служебных переменных обработки. Что-то тут не так, не правда ли? Зачем выполнять это действие каждый раз, ведь правила конвертации остаются прежними? Нет, в теории, конечно, правила можно менять каждые 5 минут, то мы такую ситуацию не будем рассматривать =).

И так, вот то самое место, которое требует оптимизации!

Решение

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

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

Таблица регистр содержит:

  1. Узел - ссылка на любой узел планов обмена
  2. Выгрузка - булев флаг, с помощью которого можно настраивать, когда использовать КЭШ - для выгрузки или для загрузки сообщений
  3. ИспользоватьКэш - булев флаг, с помощью которого можно в любой момент включить или отключить кэширование правил конвертации для выбранного узла
  4. ЗначениеКэша - ресурс с типом "ХранилищеЗначений", в котором непосредственно сохраняются инициализированные настройки правил конвертации.

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

В модуле менеджера регистра необходимо добавить следующие процедуры и функции:

 
 Сохранение в кэш
 
 Получение из кэша
 
 Структура сохраняемых настроек

Из списка полей для сохранения в кэш были исключены:

  • Менеджеры
  • МенеджерыДляПлановОбмена
  • ПостроительОтчета
  • мЗапросСтрокРегистраСоответствияОбъектов
  • мЗапросСтрокРегистраОпределенияНаличияВыгрузки
  • мЗапросНаличияСтрокВРегистреСоответствия
  • мЗапросНаличияПустыхДляИсточникаВРегистреСоответствия
  • мЗапросИнформацииОМестеСозданияОбъекта

Причина - в этих переменных хранятся значения, которые не поддерживают сериализацию. То есть мы их просто не можем никуда сохранить. Их придется инициализировать самостоятельно.

Далее нужно внести изменения в модуль объекта обработки "ОбменДаннымиXML" и в общий модуль "ПроцедурыОбменаДанными". Чтобы не усложнять пример, мы будем сохранять КЭШ правил только с флагом "Выгрузка". Перейдем в модуль обработки "ОбменДаннымиXML" и добавим следующее:

Процедура ЗагрузитьПравилаОбменаИзКэша(ЗначениеКэша) Экспорт
	
	#Если Клиент Тогда
	Состояние("Выполняется загрузка правил обмена ...");
	#КонецЕсли

	// Инициализируем менеджеры и начальные значения некоторых переменных
    ИнициализироватьМенеджерыИСообщения();
	
	ЕстьГлобальныйОбработчикПередВыгрузкойОбъекта    = Ложь;
	ЕстьГлобальныйОбработчикПослеВыгрузкиОбъекта     = Ложь;	
	ЕстьГлобальныйОбработчикПередКонвертациейОбъекта = Ложь;
	ЕстьГлобальныйОбработчикПередЗагрузкойОбъекта    = Ложь;
	ЕстьГлобальныйОбработчикПослеЗагрузкиОбъекта     = Ложь;
	
	// Заполняем текущие значения полей обработки из КЭШа
	Для Каждого Стр Из ЗначениеКэша Цикл
		ЗначениеИзКэша = Стр.Значение;
		Выполнить(Строка(Стр.Ключ)+"=ЗначениеИзКэша;");
	КонецЦикла;
	
	// После извлечения таблицы правил конвертации в ней были потеряны ссылки
	// на соответствующие строки из таблицы "ТаблицаПравилКонвертации", т.к.
	// эти значения не сериализуются. Восстановим ссылки на строки таблицы
	Для Каждого Стр Из Правила Цикл
		НайденнаяСтрокаПравил = ЭтотОбъект.ТаблицаПравилКонвертации.НайтиСтроки(Новый Структура("Имя", Стр.Ключ));
		Если НайденнаяСтрокаПравил.Количество() > 0 Тогда
			ЭтотОбъект.Правила[Стр.Ключ] = НайденнаяСтрокаПравил.Получить(0);		
		КонецЕсли;             
	КонецЦикла;
	// Аналогично таблице правил конвертации в таблице "Менеджеры" нужно восстановить
	// ссылки на строки таблицы "ТаблицаПравилКонвертации"
	Для Каждого Стр Из Менеджеры Цикл
		НайденнаяСтрокаПравил = ЭтотОбъект.ТаблицаПравилКонвертации.НайтиСтроки(Новый Структура("Источник", Стр.Ключ));
		Если НайденнаяСтрокаПравил.Количество() > 0 Тогда
			Стр.Значение.ПКО = НайденнаяСтрокаПравил.Получить(0);		
		КонецЕсли;
	КонецЦикла;
	
	// Вызываем событие после загрузки правил обмена
	ТекстСобытияПослеЗагрузкиПравилОбмена = "";
	Если Конвертация.Свойство("ПослеЗагрузкиПравилОбмена", ТекстСобытияПослеЗагрузкиПравилОбмена)
		И Не ПустаяСтрока(ТекстСобытияПослеЗагрузкиПравилОбмена) Тогда
		
		Попытка
			Выполнить(ТекстСобытияПослеЗагрузкиПравилОбмена);
		Исключение
			СтрокаСообщенияОбОшибке = ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(75, ОписаниеОшибки(), "ПослеЗагрузкиПравилОбмена (конвертация)");
			Отказ = Истина;
			
			Если Не ФлагРежимОтладки Тогда
				ВызватьИсключение СтрокаСообщенияОбОшибке;
			КонецЕсли;
			
		КонецПопытки;	
		
	КонецЕсли;
	
	// Инициализируем начальные значения параметров
	ИнициализироватьПервоначальныеЗначенияПараметров();
	
КонецПроцедуры

Думаю, что о назначении процедуры ясно из ее названия, но обратите внимание на фрагмент до заполнение таблиц "Правила" и "Менеджеры". Если запускать стандартную процедуру чтения правил обмена, в эти таблицы будут содержать ссылки на строки другой таблицы "ТаблицаПравилКонвертации". После восстановления этих таблиц из КЭШа ссылки конечно же теряются, т.к. не поддаются сериализации. Выход из ситуации простой - нужно дозаполнить восстановленные таблицы заново, что мы и сделали.

 
 Получение правил обмена для кэширования

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

В принципе у нас уже все готово для работы с КЭШем правил конвертации. Осталось лишь его задействовать при запуске обмена. Для этого в общем модуле "ПроцедурыОбменаДанными"добавим в процедуру "УстановитьПараметрыДляВыгрузкиДанныхXML" следующий код:

 
 Использование кэша правил обмена

Посмотрим результат

Итак, настройки в регистре "Настройки кэширования правил" сделаны, все необходимые изменения внесены в конфигурацию, а значит время тестирования! Выполним первый запуск выгрузки данных, а затем запустим его еще раз, но с уже сохраненным КЭШем правил конвертации. Замеры времени покажут, чего мы добились.

До оптимизации замер времени выполнения чтения правил конвертации из XML-файла следующий:

Итого на чтение правил было затрачено 152,6 секунды (~2,5 минуты). А теперь посмотрим сколько времени займет эта же операция при использовании КЭШа правил конвертации:

Всего 8 секунд! Похоже я Вас обманул, когда написал в заголовке статьи, что оптимизация даст эффект ускорения чтения правил конвертации в 20 раз, ведь ускорили мы его всего лишь в 19 раз! =)

В продолжение

Итак, оптимизация проведена успешно! Мы добились значительного ускорения чтения правил конвертации. Такой подход использовался мной при решении реальных задач. Если развивать тему, то дальше можно сделать автоматическую очистку КЭШа при загрузке новой версии правил конвертации, добавить новый вид транспорта сообщений в УПП 1.3 через веб-сервисы, уменьшить периодичность обмена, сделать отложенную загрузку и выгрузку сообщений обмена по очереди поступления, реализовать поддержку пакетного обмена данными, минимизировать влияние блокировок при обмене, но...меня понесло! Все это уже совсем другая история!

Напоследок скажу, что данный подход к оптимизации чтения правил конвертации подходит не только для устаревших механизмов обмена, которые присутствуют в УПП 1.3, УТ 10.3 и др. старых версиях конфигураций, но и для новый конфигураций как ERP 2.0, УТ 11.1, БП 3.0 и др. Конечно нужно вносить изменения иначе, но принцип тот же. И даже наличие модулей БСП ничего не поменяет.

Спасибо за внимание!

Другие ссылки

66

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

Комментарии
Избранное Подписка Сортировка: Древо
1. dmurk 270 28.06.19 00:05 Сейчас в теме
А теперь для тех, кого заинтересовала тема заголовка, но разочарован статьей.
1. Применяя описанную методику не забудьте о необходимости проверять факт изменений в правилах обмена прежде чем использовать данные из кэша
2. Данное решение никоим образом не ускоряет чтение правил обмена не находящихся в кэше, хотя это и возможно. При чтении правил обмена выполняется обработка одноуровневого массива несвязанных данных, вследствие чего задача хорошо распараллеливается по одному из двух вариантов:
- В первом случае алгоритм основан на разделении массива правил обмена на чет/нечет, либо первый/второй/третий/четвертый, либо октетная обработка и тому подобное масштабирование. Для каждого фонового задания выгружается собственная копия правил с использованием штатной Универсальной обработки с небольшими модификациями на обработку только правил с указанным совпадением номера с остатком от деления на 2, 4, 8 и т.п., а для несовпадающих номеров использовать крайне быстрый метод обработки XMLЧтение.Пропустить(), после отработки фоновых заданий потребуется выполнить сборку результатов.
- Во втором случае потребуется использовать недавно добавленные в платформу объекты поточной обработки двоичных данных, и за счет применения парного чтения двух копий XML с правилами обмена на открывающий и закрывающий XML-маркер (методом ПропуститьДо(), выполнить нарезку исходного XML файла на объекты на заданной глубине вложенности XML, после чего передать куски XML на десериализацию фоновым заданиям, что увеличивает задачу на 1 месяц разработки, но даёт 15% выигрыш в задержке диспетчера десериализации, а ещё позволяет аналогичным образом в несколько потоков перейти к решению задачи ускорения загрузки файлов обмена, а не только правил.
Артано; WellMaster; ivanov660; Dach; wowik; 27272; YPermitin; SirStefan; +8 Ответить
2. YPermitin 5134 28.06.19 06:13 Сейчас в теме
(1) Вы пошли еще дальше, отлично!

Жаль, что разочаровал. Посыл был в простой демонстрации решения. А то и правда на целый месяц разработка увеличится :)
Mi4man; paybaseme; wowik; 27272; acanta; +5 Ответить
3. dmurk 270 28.06.19 06:33 Сейчас в теме
(2) Нет, я не разочарован. Я отлично понимаю, что такое диалог с бизнесом, и что такое business value
4. Rustig 1195 28.06.19 06:41 Сейчас в теме
(0) решение интересное!
(1) я вас не понял:
1. правила не меняются или так лучше скажу - меняются, но редко - и за этими изменениями следит разработчик - то есть сам автор.
2. данное решение не должно ускорять правила, которые не "в кэше".

вообще тема простая - зная бизнес-логику программы, легко делать оптимизацию. я приведу свой реальный пример для простоты понимания сути: вот есть типовое решение в типовых конфигурациях - использовать во всех документах константу ВалютаРегламентированногоУчета - обращение к ней происходит почти в каждом документе при любой операции - распечатать что-то, провести документ, при изменении данных формы. Тут же происходит пересчет валюты через курс валюты. Но если , к примеру, вы знаете что фирма работает только с Руб. и курс постоянен =1, то можно во всех где хотите местах прописать это условие оптимизацию - к примеру убрать проверку на валюту при проведении документа, в запросах упростить сам запрос - убрать пересчет курса.
То есть, еще раз, зная бизнес-процесс фирмы и бизнес-логику программы, можно точечно оптимизировать. В этом и заключается одна из сторон автоматизации бизнес-процессов клиентов.
Примерно так я убираю (закомменчиваю) в конфигураторе механизмы ЕГАИС и ЭДО во всех местах программы, если знаю что магазин не торгует алкоголькой, это ведь строительный магазин, магазин не использует ЭДО - электронный документооборот.... И так далее и тому подобное - выигрыш в том, что программа начинает быстрее работать даже без замеров производительности.
6. YPermitin 5134 28.06.19 07:16 Сейчас в теме
(4) если вопросы ко мне, то:
1. Правила могут меняться скол ко угодно раз. При изменении правил кэш очищается. При первом обмене кэш формируется, если его не было. Разработчику можно не следить за этим.
2. Да, если в кэше правил не было, то первый запуск будет без оптимизации.
Азверин; +1 Ответить
7. Rustig 1195 28.06.19 07:22 Сейчас в теме
(6) нет вопросов, все понятно
12. lunjio 62 29.06.19 10:30 Сейчас в теме
(6) Было бы логичнее хэш высчитать массива и хранить кэш в привязке к хэшу, вроде операция не дорогостоящая, но логически корректная. На картинке вижу 52 и 8, а не 152 и 8 ) точно 152 ?
13. YPermitin 5134 29.06.19 10:35 Сейчас в теме
(12)
52 и 8, а не 152 и 8


Хеш хранить для сравнения актуальны ли данные в кэше? Так и делалось.

Про картинку затрудняюсь ответить, почему общий замер 152, а в подвале таблицы только 52 видно. Все таки 6 лет прошло с тех пор :)
Прикрепленные файлы:
10. triviumfan 10 28.06.19 22:59 Сейчас в теме
(4)
от есть типовое решение в типовых конфигурациях - использовать во всех документах константу ВалютаРегламентированногоУчета - обращение к ней происходит почти в каждом документе при любой операции - распечатать что-то, провести документ, при изменении данных формы. Тут же происходит пересчет валюты через курс валюты. Но если , к примеру, вы знаете что фирма работает только с Руб. и курс постоянен =1, то можно во всех где хотите местах прописать это условие оптимизацию - к примеру убрать проверку на валюту при проведении документа, в запросах упростить сам запрос - убрать пересчет курса.
То есть, еще раз, зная бизнес-процесс фирмы и бизнес-логику программы, можно точечно оптимизировать. В этом и заключается одна из сторон автоматизации бизнес-процессов клиентов.
Примерно так я убираю (закомменчиваю) в конфигураторе механизмы ЕГАИС и ЭДО во всех местах программы, если знаю что магазин не торгует алкоголькой, это ведь строительный магазин, магазин не использует ЭДО - электронный документооборот.... И так далее и тому подобное - выигрыш в том, что программа начинает быстрее работать даже без замеров производительности.

Сомнительная оптимизация.
11. Rustig 1195 29.06.19 09:02 Сейчас в теме
(10) в чем сомнения, дорогой друг?
14. triviumfan 10 29.06.19 10:36 Сейчас в теме
(11) обращение к константе - тут бессмысленно что-либо делать, даже модуль повторного использования значений не рекомендуется (на итс где-то видел), пересчета как такого нет, ведь идёт сравнение валют, коль обе рубли то и пересчета нет.
егаис и эдо небось от значений функциональных опций зависит, зачем комментировать, если оно итак не работает и соответственно оптимизировать нечего.
15. Rustig 1195 29.06.19 23:12 Сейчас в теме
(14)егаис и эдо в УТ 10.3,в котором нет функц. опций. Я привёл пример общего принципа. Если и спорить, то не с конкретным примером, а с принципом оптимизации кода (РЕФАКТОРИНГ). Ну а про константу принцип простой - для моей организации эта константа в принципе не нужна, и поэтому все вызовы и пересчёт курса тоже не нужны. Берите шире, смотрите глубже - кроме этой константы много чего ещё можно отключить в конфигурации: нет учёта серий - убираем серии и т.д.
16. dmurk 270 30.06.19 22:41 Сейчас в теме
(4) У меня были ситуации когда в один поток обмен не успевал загружать суточный объем данных. Тогда приходит на помощь параллельная разборка xml с данными
5. acanta 67 28.06.19 07:06 Сейчас в теме
Огромное спасибо, очень помогли.
YPermitin; +1 Ответить
8. Dach 279 28.06.19 11:16 Сейчас в теме
Очень уважаю автора, но статья странная. Больше подходит новичку, нежели опытному автоматизатору, честно говоря.

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

Сделать из обработки документ, все методы обмена перенести в него, все реквизиты обработки - в реквизиты документа. Все что можно сериализовать - все в реквизиты с типом Строка или ХранилищеЗначения, все что нельзя сериализовать - написать обработчики заполнения при инициализации объекта документа. Поменялись правила - открыли документ интерактивно, перезаписали их.

Короче, посыл не очень ясен. Думаю, каждый 3-й наш коллега таких "ускорений" делает пяток штук в месяц.
Может не стоит все подряд из старого блога сюда "переносить"? Исключительно ИМХО.
acanta; YPermitin; +2 2 Ответить
9. YPermitin 5134 28.06.19 11:48 Сейчас в теме
(8) спаибо за отзыв!

Хорошо, что каждый 3-й делает подобные оптимизации в среднем 5 раз в месяц. Автоматизация и компетенции растут!

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

Ваше мнение услышано!
Оставьте свое сообщение

См. также

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

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Производительность и оптимизация (HighLoad) Администрирование данных 1С

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

13.09.2019    3429    Repich    4       

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

Статья Системный администратор Программист Нет файла v8 Linux Бесплатно (free) Администрирование данных 1С Zabbix

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

10.09.2019    6899    Sloth    11       

Анализ производительности APDEX 65

Отчеты и формы Системный администратор Программист Внешний отчет (ert,erf) v8 1cv8.cf Бесплатно (free) Производительность и оптимизация (HighLoad)

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

31.08.2019    2627    93    YPermitin    7       

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

Статья Программист Нет файла v8 Россия MS SQL Бесплатно (free) Производительность и оптимизация (HighLoad)

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

19.07.2019    4136    Филин    12       

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

Статья Системный администратор Программист Нет файла v8 v8::blocking MS SQL Бесплатно (free) Производительность и оптимизация (HighLoad)

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

16.07.2019    3517    fhqhelp    0       

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

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

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

02.07.2019    5995    igordynets    119       

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

Статья Системный администратор Программист Нет файла v8 Windows Бесплатно (free) Производительность и оптимизация (HighLoad)

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

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

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

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

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

13.06.2019    7189    Repich    117       

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

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

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

13.06.2019    2607    slayer-ekb    10       

Назад в прошлое! Небольшие заметки по администрированию пользователей в УПП 71

Статья Системный администратор Программист Стажер Нет файла v8 УПП1 Бесплатно (free) Роли и права

Небольшие заметки по функционалу "Администрирование пользователей" конфигурации "Управление производственным предприятием" версии 1.3. Затрагиваются такие темы как: роли, профили доступа, дополнительные права, настройки пользователей и ограничения доступа на уровне записей (RLS).

06.06.2019    6257    YPermitin    16       

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

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

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

28.05.2019    7119    ivanov660    5       

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

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

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

21.05.2019    4353    vasilev2015    21       

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

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

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

20.05.2019    3736    zhichkin    15       

Как работают управляемые блокировки 121

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

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

29.04.2019    13086    comol    198       

Странное потребление места на диске С 33

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

Решение проблемы постоянного роста папки %AppData%/Local/Temp.

26.04.2019    10588    kuzyara    12       

Включение встроенного в платформу механизма "Копии базы данных" и использование "Дата Акселератора". Новый стандартный механизм использования баз OLAP в 1С 49

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

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

25.04.2019    8145    Elf1k    26       

5 простых шагов и 15 минут на разворачивание инструмента мониторинга проблем производительности базы 1С 201

Статья Системный администратор Программист Нет файла v8 Windows Бесплатно (free) Производительность и оптимизация (HighLoad)

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

18.04.2019    17806    ivanov660    40       

Как разбить базу на файлы и не сойти с ума 108

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

Разбиение базы данных 1C на файлы и последующее сопровождение. Нюансы, грабли и прочее.

06.04.2019    8617    YPermitin    29       

Как одно изменение конфигурации PostgreSQL улучшило производительность медленных запросов в 50 раз 124

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

В связи с санкциями и другими событиями сейчас все более и более актуальна тема перевода ПО компаний на отечественное и свободное программное обеспечение. Одной из самых востребанных СУБД на рынке на данный момент является PostgreSQL - надежная, высокопроизводительная и хорошо масштабируемая СУБД, которая является прямым конкуретном таким крупным компаниям с их топовыми продуктами, как Oracle, IBM и Microsoft. Однако каждый, кто переходит на PostgreSQL, сталкивается с трудностями, прежде всего с настройкой и производительностью. Не обошли проблемы с производительностью "слоника" и меня. Предлагаю вашему вниманию перевод статьи "How a single PostgreSQL config change improved slow query performance by 50x" автора Pavan Patibandla, которая мне помогла улучшить производительность PostgreSQL.

18.03.2019    9781    w.r.    23       

Простое программное решение проблем с блокировками SQL 17

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

Описание одного из способов программного решения проблемы блокировок при проведении документов в клиент-серверной 1С.

06.03.2019    5827    dmitrydemenew    38       

Производительность сервера 1С и фоновые задания 63

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

В падении производительности сервера 1С зачастую виноваты не регламентные / фоновые задания, они выполняют полезную работу. Но задания нельзя оставлять «наедине» с базой.

05.02.2019    10700    user715208    38       

Новый режим реструктуризации (обновление базы данных на сервере в режиме v2) 168

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

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

31.10.2018    18304    Dach    46       

Нетривиальные подходы в решении всем известных проблем: ускорение «больших» документов в 1С и ускорение поиска по подстроке. Как добиться эффекта в разы? 62

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

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

30.08.2018    10782    gallam99    31       

Кейс: как мы разрабатывали систему автоматизации анализа ошибок, связанных со скоростью работы 1С 43

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

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

27.08.2018    7444    Andreynikus    20       

3000 пользователей на трехъядерном Athlon – сверхтонкий веб-клиент для 1С 97

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

Юрий Лазаренко поделится опытом ускорения 1С нестандартными методами, в том числе с помощью http-сервисов. Он расскажет, как с помощью сверхтонкого клиента для 1С и интеграции с сайтом удалось добиться ускорения 1С на порядок. Также в статье приведена статистика по отчету о нагрузочном тестировании сверхтонкого клиента для 1С:ITIL.

16.08.2018    11284    TitanLuchs    28       

Когда условие в срезе последних даже вредит 20

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

Спойлер: оптимизатор MSSQL видит внешние, по отношению к срезу, условия, и строит план с их учетом.

05.08.2018    7701    nicxxx    105       

Способы оптимизации переносов данных 56

Статья Программист Нет файла v8 КД Абонемент ($m) Перенос данных из 1C8 в 1C8

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

1 стартмани

02.08.2018    9674    93    primat    7       

Оптимизация без оптимизации: как мы ускорили 1С в 10 раз без трудоемкой оптимизации запросов и алгоритмов. Практический опыт 80

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

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

26.07.2018    13095    avryanovalexey    100       

Альтернативные технологии нагрузочного тестирования серверной части кода прикладных решений на платформе 1С 56

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

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

12.07.2018    8175    jf2000    10       

Архитектура ИТ-системы на базе 1С в крупной организации. Часть 2. Чудес не бывает 81

Статья Системный администратор Нет файла v8 УТ11 Россия Бесплатно (free) Производительность и оптимизация (HighLoad)

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

04.07.2018    12157    Repich    74       

Архитектура ИТ-системы на базе 1С в крупной организации 101

Статья Системный администратор Нет файла v8 УТ11 Россия Бесплатно (free) Производительность и оптимизация (HighLoad)

В данной статье я хотел бы очень крупными мазками обрисовать архитектуру ИТ системы на базе 1С в крупных (более 1 тысячи пользователей) организациях. Она не несет какой либо образовательной цели, это просто попытка показать – «а как у нас».

02.07.2018    14681    Repich    112       

Взгляд на ошибки и платформу через призму HI-Load 53

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

Поговорим об ошибках в целом и их влиянии на Hi-Load системы в частности. Может ли тут помочь платформа 1С? (да и должна ли в принципе?) Немного про сам Hi-Load на примере крупной БД. PS Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2017 COMMUNITY.

18.06.2018    9944    Sergey.Noskov    27       

Простые регулярные выражения 59

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

Шпаргалка к экзамену "Эксперт по технологическим вопросам".

30.04.2018    11645    3    vasilev2015    30       

Неоптимальная работа запроса 128

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

Шпаргалка к экзамену "Эксперт по технологическим вопросам".

27.04.2018    16948    vasilev2015    32       

Неоптимальности вида «план исполнения запроса "испортился"» - поиск и исправление 69

Статья Системный администратор Программист Нет файла v8 Windows Бесплатно (free) Производительность и оптимизация (HighLoad)

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

05.02.2018    13696    fhqhelp    20       

Пример поиска неоптимальности при загрузке SQL-сервера по CPU на 100% 83

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

Вечер пятницы, ничто не предвещало.. Звонок из техподдержки: "центральная база розничной сети лежит". Далее расследование причин.

23.12.2017    15246    fhqhelp    32       

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

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

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

30.10.2017    24212    MrWonder    38       

Вопросы разработки, анализа производительности и оптимизации приложений 1С под управлением СУБД ORACLE 16

Статья Системный администратор Программист Нет файла v8 Oracle Бесплатно (free) Производительность и оптимизация (HighLoad)

Я являюсь сотрудником Комсомольского-на-Амуре филиала компании «Сухой». Наше предприятие производит боевую авиационную технику и комплектующие для гражданской авиационной техники. В статье я вам расскажу про свой опыт работы со связкой 1С и СУБД ORACLE.

05.09.2017    10428    user597755_vices2015    2       

Оптимизируй это! Или MS SQL и Экспертный подход творят чудеса! 207

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

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

11.07.2017    28931    R.Tsarenko    32       

Планы запросов - это просто! 291

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

Наверное, каждый 1С-ник задавался вопросом "что быстрее, соединение или условие в ГДЕ?" или, например, "сделать вложенный запрос или поставить оператор В()"? В данной статье я не дам вам исчерпывающих инструкций по чтению планов запроса. Но я постараюсь объяснить доходчиво - что это такое и с какой стороны к ним подойти.

04.07.2017    31116    Evil Beaver    58       

PostgreSQL на Windows – реальная альтернатива для высоконагруженных систем на базе 1С 157

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

Многие интересуются PostgreSQL, но не знают, насколько хорошо будет она работать с уже существующими системами. «Инфософт» - одна из первых компаний, кто опробовал PostgreSQL на Windows. О своем опыте перехода рассказывает руководитель отдела информационных технологий компании.      

23.06.2017    37115    a.doroshkevich    113