Менеджер потоков: реализация "любой" задачи в потоках

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

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

49
Менеджер потоков – один их новых инструментов, который упрощает работу разработчиков. Насколько легко с ним, на конференции Infostart Event 2018 Education показал начальник отдела автоматизации 1С Иван Филимонов компании «Трансстроймеханизация».

Немного о себе

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

 

О чем будет доклад

Тема доклада – “Менеджер потоков”, инструмент, позволяющий вести разработку алгоритмов, которые будут работать параллельно. При этом “Менеджер потоков” возьмет на себя максимум трудностей, с которыми может столкнуться разработчик при работе с потоками.

Кто далек от этой темы, кратко расскажу:

  • что такое “потоки”;
  • какие бывают способы распараллеливания;
  • чем является “Менеджер потоков”;
  • какие методы он позволяет использовать при распараллеливании;
  • архитектура “Менеджера потоков” при обмене данными;
  • общие принципы его работы;
  • “События” и “ресурсы”.

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

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

 

Результаты тестов по восстановлению последовательности партий

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

На чем проводились тесты? Тесты проводились на платформе 8.3.10, режим совместимости 8.2.13, read committed snapshot у нас отсутствует. Мы еще не переехали на вариант без режима совместимости. База данных – “Управление производственным предприятием”. Размер базы 280 гигабайт, 1 юридическое лицо.

 

 

 

Тесты проводились на реальной базе, по четырем месяцам, размеры базы по количеству документов не очень большие – всего 20 тысяч документов месяц. Стандартное время обработки данного объема данных у нас занимает примерно 3,5 часа. Притом доступ у нас монопольный. Ни один из пользователей не может провести никакой документ, связанный с партиями, иначе у нас партии могут не восстановиться.

Запускался “Менеджер потоков” на 10 потоках.

Результаты получились у нас следующие: “Восстановление партий” у нас, стало происходить за 15,5 минут - ускорение в 14,5 раз и самое главное без монопольного доступа.

Вопрос в студию: ни у кого вопросов не возникает по данным результатам?

Возникает?

Я думаю, это вопрос “Как получились такие результаты”?

 

 

 

С чем связан этот вопрос? Связан он с тем, что в стандартном механизме “Восстановления партии” есть одна очень ресурсоемкая процедура, которая называется «СдвинутьПоследовательностьВперед». Именно она занимает львиную долю времени. Если ее убрать (при восстановлении в потоках, мы ей не пользуемся), то стандартное время восстановление будет проходить, в нашем случае, за 1,5 часа. Тогда восстановление в потоках у нас будет уже не 14-кратное, а 6-кратное. Это уже более-менее логично.

В нашем докладе будут принимать участие:

 

  •  сеанс «Основной программы» – этакий босс, ставит задачу, ждет результатов;

 

  •  сеанс «Менеджера потоков» – строгий дядька, контролирует все, следит за тем, чтобы вся работа шла;

 

  •  сеансы “Потоков” – ребята-работяги, им сказали копать отсюда и до обеда, вопросов не задают - работают.

 

Это наши герои.

Помимо этого, у нас еще будет супер-герой – господин “Зануда” . Он будет присутствовать на ряде слайдов. Где он будет присутствовать, слайд будет достаточно важным с точки зрения понимания архитектуры или внутренних тонкостей.

Еще, как во многих фильмах, у нас будет с Вами массовка. Чтобы было не очень скучно.

 

 

 

Что такое потоки

Кратко для тех, кто далек и не знает что такое “потоки”. Это запуск каких-то инструкций или процедур в нескольких узлах, на которые мы подаем определенные данные и ускоряем работу за счет того, что большой массив бьем на маленькие кусочки.

Основная цель очень простая – ускорение работы и утилизация свободных ресурсов сервера.

 

Способы распараллеливания

По классификации Флинна способов распараллеливания 4. Они описывают работу процессоров, но для лучшего понимания в принципе тоже подойдут.

  • Первый способ самый простой – полное отсутствие распараллеливания;
  • Второй способ – дублирование расчетов. Данный способ используется на критически важных объектах, где стоимость ошибки очень высока. Например, я точно знаю, что при запуске в СССР корабля “Буран” расчетом телеметрии и определенных параметров занимались несколько модулей сразу – по-моему, три. Если какой-то давал результат, который не совпадал с двумя другими, его данные просто-напросто отбраковывались.
  • Следующий вариант, он очень многим знаком, это как раз, когда массив данных бьется на маленькие кусочки, которые посылается в разные узлы и над ними выполняется какая-то инструкция.
  • Последний вариант – это то, как работают нынешние многопроцессорные системы, многоядерные процессоры. Когда у Вас, в один момент времени, над объемом данных работают разные инструкции. Один из методов, реализованных в “Менеджере потоков”, позволяет использовать такой подход.

 

 

 

Что же такое менеджер потоков?

С точки зрения метаданных это один общий модуль. Больше ничего нет. Вообще. Как хотите, так и используйте его. Хотите – в расширение заталкиваете, хотите – в метаданные засовываете.

Пока это идет как обычная *.cf, просто обновляете конфигурацию.

 

 

 

Но этого будет мало. Помимо этого, Вам, как разработчикам, потребуются “модули событий разработчика”. Что это такое, расскажу дальше. Сейчас я только лишь расскажу, где Вы можете их разместить.

 

  • Первый вариант – самый простой и самый лучший, как я считаю, – это под каждую процедуру многопоточной обработки делать отдельный “Общий модуль”. Таким образом Вы, по крайней мере, как-то локализуете свой пакет событий. Это просто упрощает дальнейшую навигацию, поиск каких-то корректировок, ошибок, доработки своих алгоритмов.
  • Следующий вариант – разместить алгоритмы в “Модуле объекта” внешней обработки. Когда может потребоваться? Например, у заказчика уже установлен “Менеджер потоков” конфигурации, а Вы хотите произвести какую-то обработку, которая будет многопоточно обрабатывать данные. Вы полностью весь код можете разместить в этой обработке, абсолютно не внося код в конфигурацию поставщика. И все будет работать.
  • И последний вариант, в принципе, я его не рекомендую использовать, но он, как пережиток прошлого, остался. Это размещение событий разработчиков в самом “модуле менеджера потоков”. Не рекомендую по той простой причине, что если будут выходить обновления, придется заниматься сравнением и объединением, как со всеми конфигурациями.

Поэтому пользуйтесь отдельными общими модулями под каждую задачу.

Если с другой стороны посмотреть. Можно провести аналогию с 1С. В 1С, мы знаем, есть инструмент – платформа (конфигуратор) и есть решения, которые мы получаем с помощью этого инструмента. Есть другой инструмент, например, “Конвертация данных”. эту конфигурацию многие знают, умеют пользоваться. И  есть решения, которые мы можем с помощью этого  инструмента получить. “Менеджер потоков” также является инструментом, а “модули событий разработчика” являются вашими решениями, которые Вы можете разрабатывать и использовать в своей работе.

 

 

 

Реализованные методы

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

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

Но сложностей будет гораздо больше. Эти все проблемы на себя берет “Менеджер потоков”. Вам больше не надо будет ломать голову, как решить ту или иную задачу.

 

 

 

Методы, которые реализованы в “Менеджере потоков”.

На данный момент их насчитывается 3.

  • Первый – самый простой – «ДополнитьКоллекцию». Допустим, у Вас есть коллекция либо “Массив”, “СписокЗначений”, “ТаблицаЗначений”. Вы эту коллекцию посылаете в “Менеджер потоков”, на выходе получаете копию этой коллекции, но уже измененную, на сколько измененную, Вы опишете в событиях разработчика.

 

 

 

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

 

 

 

 

  • Третий вариант, наверное, самый сложный, но и самый интересный. Из этой задачи и родился “Менеджер потоков”, как отдельная разработка. Данный метод позволяет “Менеджеру потоков” строить граф зависимости объектов в своей памяти и посылать объекты на обработку уже не в порядке следования в той коллекции, которую Вы берете для обработки, а по определенным механизмам связывания объектов. Как объекты будут связаны между собой, также определяете Вы в “событиях разработчика”.

Данный вариант Вам подойдет, например, в процедуре “восстановления партии”, процедуре “восстановления взаиморасчетов контрагентов”. Может быть, есть какие-то “цепочки формирования производственных документов”, где документы должны идти в строгой последовательности. Как вариант еще может быть обработка каких-то объектов, которые друг друга блокируют по пересечению измерения регистров. Чисто теоретически тоже можно воспользоваться “Менеджером потоков” и обработать массив объектов в потоках без блокировок.

 

 

 

 

Архитектура  

Как организована вся архитектура внутри менеджера потоков?

У нас есть “Основная программа”, есть “Фоновое задание менеджера потоков”, есть запущенные “Потоки”. Весь обмен данных между ними происходит с помощью “Хранилища общих настроек”. Замечательный объект в 1С, который позволяет хранить произвольный тип данных. То есть мы уходим от “Временного хранилища”, мы уходим от файловой передачи данных. Замечательный объект, который позволяет эти все вопросы решить. В рамках данного хранилища реализуется следующее:

  • Пул данных “ячеек потоков”, который равен количеству запущенных потоков, для каждого потока своя отдельная ячейка, за которой он следит.
  • Пул данных “клиент-поток”. Это те ячейки, куда подаются данные для обработки потоками. Их количество несколько другое и зависит от определенного коэффициента. На значение данного коэффициента Вы, как разработчик, также можете влиять. По умолчанию я его поставил равным 3. Данный коэффициент имеет очень высокое значение, он может позволить как увеличить распараллеливание и ускорить обработку данных, так и уменьшить ее, т.к. при большом значении этого коэффициента “Менеджер потоков” может заниматься больше обсчетом графа, нежели “Потоки” будут выполнять работу непосредственно с самими данными. Количество этих ячеек определяет размер графа, с которым одновременно работает “Менеджер потоков”. Те данные, которые не успевают попадать в граф, копятся в отдельные очереди.
  • Еще один пул ячеек – их всего 2е – для того, чтобы менеджер потоков и основная программа как-то тоже обменивались данными.

 

 

Как в общем происходит самая работа?

  1. “Основная программа” подает данные на обработку в свободные ячейки (пул “клиент-поток”).
  2. Для “Менеджера потоков” сообщает адреса, в которых находятся данные, которые мы посылаем на обработку.
  3. Менеджер потоков крутится в цикле (других вариантов придумать не получилось), мониторит свою ячейку обмена с “Основной программой”, смотрит, появились там данные или нет. Если данные появились, “Менеджер потоков” их забирает.
  4. По полученным адресам “Менеджер потоков”, забирает данные из пула “Клиент-Поток”. После этого он строит независимый граф, определяет, какие потоки свободны.
  5. В свободные потоки перенаправляет адреса ячеек, где хранятся данные.
  6. “Поток” также крутится в цикле, следит за своей одной ячейкой. Как только “поток” видит, что данные в ней появились, он их считывает.
  7. По полученному адресу “поток” забирает данные из пула “клиент-поток” и как-то их обрабатывает.
  8. После того как данные будут обработаны, “ответ” от “потока” складывается в ту же самую ячейку, откуда были данные взяты (пул “клиент-поток”).
  9. Ячейка, за которой “поток” следит - очищается.
  10. “Менеджер потоков” знает, какие “потоки” у него сейчас работают, следит за теми ячейками, с которыми “потоки” работают. Как только он видит, что ячейка освободилась, “Менеджер потоков” понимает, что “поток” закончил свою работу
  11. “Менеджер потоков” забирает данные для анализа. На этом этапе “Менеджер потоков” принимает решение, что делать дальше. Вариантов может быть три:
  • Первый вариант – “Пропуск” – мы сообщаем “Основной программе”, что объект не требует никакой дальнейшей обработки. Если смотреть с точки зрения “Восстановления последовательности партии”, это у нас может быть обработка документа “Поступление товаров и услуг”.
  • Второй вариант - потоки “Рассчитали ресурсы” (об этом будет сказано дальше). “Менеджер потоков” забирает данные по этому объекту к себе, строит граф, уже зависимый. Устанавливает связи по рассчитанным ресурсам этого объекта с другими объектами, которые стоят в обработке, и при наступлении определенного момента посылает этот объект дальше на обработку в “потоки”.
  • Третий вариант - “поток” вернул “Ответ”, то есть полностью закончил обработку объекта
  1. “Менеджер потоков” консолидирует информацию на данной итерации и  сообщает “Основной программе”, список адресов с результатами.
  2. “Основная программа”, пока работает “Менеджер потоков”, также крутится в цикле. Она смотрит за своей ячейкой, где ей будут приходить результаты. Увидев, что там появились какие-то данные, она их забирает
  3. По полученным адресам “Основная программа” забирает результаты из пула “клиент-поток”.

 

 

 

Общая схема в принципе выглядит примерно так:

 

 

 

 

Общие принципы работы

Тут на самом деле все очень просто.

Инициализация. Что у нас есть? У нас есть “Основная программа”. В ее рамках

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

 

 

Поддержка работоспособности. У нас есть “Менеджер потоков”, есть “Фоновые задания потоков”. “Менеджер потоков” раздает данные “Потокам” и бдительно за ними следит, чтобы “Потоки” работали корректно.

Но не все бывает так гладко - “потоки” могут падать. “Менеджер потоков” знает, что такая проблема бывает, он “поднимает поток”. Но “поток” может снова упасть. “Менеджер потоков” знает, что эта процедура бывает непростая. Он это все дело пытается повторить несколько раз. Сколько раз, определяется с помощью определенного параметра – “ПределКоличестваПопытокОбработатьОбъект”. По умолчанию этот параметр равен 5 (в последней версии сокращен до 1). То есть 5 раз “Менеджер потоков” пытается обработать один и тот же объект. Но может быть ситуация, что объект просто нельзя обработать, потому что какой-то реквизит не задан и объект, например, не проводится и не записывается. По достижении данного порога “Менеджер потоков” все-таки возобновляет работу “потока”, но данные в него уже не передает, а “Основной программе” он сообщает, что обработать данный объект не удалось.

 

 

Завершение работы. Как было сказано, у нас “Менеджер потоков” бдительно следит за работой “потоков”. Но при этом “потоки” – это тоже ребята не простые, они тоже присматривают за менеджером. Если по каким-то причинам “Менеджер потоков” выходит из строя, а причины могут быть разные. “Потоки” говорят, что им тоже жизнь не мила без их менеджера.

Если “Менеджер потоков” прекратил свою работу на этапе обработки данных, предположим, вскрылась какая-то критическая ошибка, “Основная программа” выдаст ошибку. Если же “Менеджер потоков” прекратил свою деятельность по той простой причине, что он просто все обработал и больше обрабатывать ничего, “Основная программа” продолжает дальнейшую работу.

Если по каким-то причинам придется непосредственно остановить “Менеджер потоков” (всякое бывает), никаких проблем нет. Вызываем одноименный метод, “ОстановитьМенеджерПотоков”, где указываем его идентификатор (строковый, указанный при инициализации). В рамках информационной базы выполнения данного метода можно произвести на любом сеансе.

 

 

 

События

Что такое события?

“События” – это, можно так сказать, “окошки” в алгоритмах менеджера потока, с помощью которых разработчик может существенно влиять на работу “Менеджера потоков”. По большому счёту, это эквивалент подписок на события. Они даже примерно так и называются. Количество событий на сегодняшний момент 15. Между нашими героями они распределены примерно в таком варианте:

 

 

 

 

Можно заметить, что некоторые события являются процедурами, некоторые – функциями. События, являющиеся функциями, позволяют свой результат передавать в другие события, притом даже между участниками. Если, например, в событии “ПриЗапускеМенеджераПотоков” выполнить какие-то действия, собрать какой-то пул данных, то его можно получить на стороне каждого потока, при этом не рассчитывая каждый раз.

 

Работа менеджера потоков в разных сеансах.

Сеанс основной программы. У нас есть модуль “Основной программы”, есть модуль “Менеджера потоков”. В рамках “Основной программы” надо произвести инициализацию, где указать место расположения событий разработчика “менеджера потоков” как имя модуля и имя функции. В этот момент подключается библиотека с событиями разработчика. Она достаточно простая – одна функция, где через оператор “Если” мы перебираем все события, которые у нас могут быть и в зависимости от события, мы выполняем те или иные действия.

Дальше производим инициализацию “Менеджера потоков”. Срабатывает самое первое событие “ПередЗапускомМенеджераПотоков”, где вызывается функция, куда передается по умолчанию два параметра, но параметров может быть 3 (максимум) в зависимости от событий. После этого происходит запуск “Менеджера потоков”. Затем происходит запуск основного цикла обработки коллекции, где мы передаем объекты. В рамках данного цикла происходит:

  • получение данных из “Менеджера потоков” и обработка следующих событий
    • ПриОбработкеОшибки;
    • ПриОбработкеОтвета;
    • ПриОбработкеПропуска.
  • Потом происходит отправка новых данные в “Менеджер потоков”

После обхода основного цикла выполняется метод «ДождатьсяОстановкиМенеджераПотоков», в рамках которого накопленная очередь продолжает обрабатываться, потому что не все может происходить в один момент времени, она обрабатывается по тому же самому алгоритму, как и основная обработка всех объектов.

В конце вызывается завершение метода “Менеджера потоков” и еще 2 события:

  • первое связано с мониторингом;
  • второе - “ПослеЗавершенияМенеджераПотоков” - последнее событие, в котором Вы можете что-то еще дополнительно сделать.

 

 

 

 

В рамках “Менеджера потоков” все чуть проще.

У нас срабатывает первое событие при начале менеджера потоков “ПриЗапускеМенеджераПотоков”, как и в основном сеансе программы. Затем запускается цикл запуска “потоков”, перед запуском каждого потока, можно обработать еще одно события “ПередЗапускомПотока”, затем выполняется запуск самого потока.

После этого идет основной цикл программы, в рамках которого мы проверяем:

  • состояние потоков;
  • проверяем данные, которые у нас были обработаны;
  • отправляем данные “Основной программе”;
  • получаем новые данные от “Основной программы”;
  • отправляем данные в “потоки”.

В конце снова два события:

  • “ПередЗавершениемМенеджераПотоков”
  • и еще одно событие, связанное с мониторингом.

 

 

У “потока” все еще проще. Также у нас первое событие “ПриЗапускеПотока”. Основной цикл здесь очень простой:

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

 

 

 

 

Примеры

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

Метод “ДополнитьКоллекцию” очень простой. Что нам надо? На стороне основной программы пишем две строчки:

  • получаем структуру параметров инициализации “Менеджера потоков”, куда передаем идентификатор менеджера и место расположения событий разработчика.
  • После этого вызываем метод «ДополнитьКоллекцию», куда передаем структуру параметров и коллекцию.

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

На стороне менеджера Вам нужно обработать всего одно событие “ПриОбработкеДействияПотока”. Код будет выглядеть примерно так:

 

 

 

Это Ваш модулей событий разработчика, маленькая заготовка, где показан код, как можно достучаться до элемента коллекции. Дальше с этим элементом делаете всевозможные манипуляции – меняете, делаете поиск данных, подставляете какие-то значения, все, что хотите. И в конце в переменную “НоваяКоллекция” у Вас вернется уже обновленная коллекция, обработанная в потоках.

Метод “ОбработатьКоллекцию” очень похож на предыдущий. Здесь все

очень просто, все то же самое. Единственное – меняется сам метод, который Вы используете. Но событий надо обработать уже два:

  • первое событие точно такое же как “ПриОбработкеДействийПотока”
  • второе – “ПриОбработкеМассиваОбработанныхФрагментовКоллекции”.

Здесь код примерно такой же.

Но здесь немножко меняется концепция: в события “ПриОбработкеДействияПотока” уже дается не элемент коллекции, а фрагмент коллекции, с которым Вы производите какие-то манипуляции.

И в событии “ПриОбработкеМассиваОбработанныхФрагментовКоллекции” мы получаем уже отсортированный в нужном порядке массив фрагментов, который посылался на обработку в потоке, объявляется новая коллекция, которую Вы хотите получить на выходе, ее каким-то образом компонуете (как внешние таблицы СКД, как табличный документ и т.д.).

 

 

 

Про метод «ОбработатьОбъект» пока рано говорить. Надо сначала обсудить ситуацию с “Ресурсами”.

 

Ресурсы

“Ресурс” – это то, что позволяет “Менеджеру потоков” построить граф. Графы – это у нас кружочки, их ещё называют узлами. И есть еще стрелочки, их ещё называют ребрами или дугами. Больше нам ничего не требуется для того, чтобы построить графы. Если смотреть с точки зрения теории графов, то там есть еще очень большое количество понятий и определений, но разработчику они будут не нужны. Все, что нужно разработчику, – это понимать, как строятся сами связи.

Связи строятся очень просто: они строятся на основании ресурсов. У нового объекта, добавляемого в граф, рассчитываются ресурсы и если какие-то из этих ресурсов совпадают с ресурсами других объектов уже находящихся в этом графе, то между ними устанавливается связь. Притом связь в одном направлении: от более позднего к более раннему. Если, предположим, объектов с одним и тем же ресурсов в графе будет найдено несколько, тогда связь устанавливается до самого позднего среди ранних. Те объекты, которые не ссылаются на какой-либо другой объект, то есть ни от какого другого объекта не зависят, посылаются в “потоки”.

 

 

Дальше показан механизм, как строить ресурсы. Методов пока не предусмотрено, поэтому, разработчики, пользуйтесь данной схемой.

 

 

 

Ниже приведены простые примеры, как это делается на примере “Восстановления партий”.

 

 

 

Наверху у нас последовательность документов, реализации и перемещения. Каждый цвет это отдельный склад. Разработчик определяет состав ресурсов (как он выглядит графически, смотрите на слайде). На основании этих ресурсов “Менеджер потоков” строит граф. И объекты по такому графу посылаются в обработку в потоки.

Если немного усложнить, то мы делаем с Вами обработку объектов не только по складам, но и по составу документа, то есть у нас будет склад и материал.

 

 

 

С точки зрения обычной обработки у нас ничего не меняется. Как был поток, так он идет. Если мы с Вами рассчитаем ресурсы, то менеджер потоков на основании таких ресурсов построит другой граф. И объекты он пошлет уже по-другому количеству потоков.

Слайд для сравнения

 

 

Можно увидеть, что в зависимости того как Вы будете строить ресурсы, будут получены и разные графы. И от этих графов будет получен разный результат работы объектов. То есть в принципе все зависит от Вас, как от разработчиков.

 

Механизм формирования ресурсов

 

 

По большому счету здесь рассчитывается хэш ресурсов. Притом состав ресурса может быть совершенно разным, не обязательно у нас состав ресурса должен быть однотипный. Обратите внимание на левой табличке, где формируется массив ресурсов, внизу лежит ещё “заказ”. То есть мы можем формировать разными способами связывание объектов.

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

 

 

Остался метод «ОбработатьОбъект».  Здесь немножко и структура меняется, нужно также получить параметры, проинициализировать “Менеджер потоков”, запустить обработку коллекции, куда мы передаем:

  • параметры менеджера;
  • элемент для обработки;
  • дополнительную произвольную структуру с параметрами необходимыми для обработки конкретного элемента.

 На стороне менеджера потоков нам надо обработать три события: “ПриПолученииРесурса”, “ПриОбработкеДействияПотока” и “ПриДобавленииВОчередьПотока”. Весь код на слайде.

 

 

 

 

 

Мониторинг

Здесь все просто. Тут буквально несколько слайдов, что еще можно сделать.

 

 

 

 

 

 

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

 

Менеджер потоков: //1c.smartsoft.kz/public/778905/

 

****************

Данная статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART EVENT 2018 EDUCATION. Больше статей можно прочитать здесь.
Приглашаем вас на новую конференцию INFOSTART EVENT 2019!

49

Скачать файлы

Наименование Файл Версия Размер
Презентация
.pptx 4,03Mb
02.08.19
17
.pptx 4,03Mb 17 Скачать бесплатно

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

Комментарии
Избранное Подписка Сортировка: Древо
1. Идальго 122 01.08.19 14:47 Сейчас в теме
Менеджер потоков это в 1с теперь новый объект-механизм такой или вот что-то типа обработки, которая разделяет данные и выполняет в фоновых заданиях. Я просто далёк сейчас от 1С и не в курсе тенденций и того, что 1с добавляет в платформу.
2. DarkAn 899 01.08.19 15:48 Сейчас в теме
(1)
Менеджер потоков это в 1с теперь новый объект-механизм такой или вот что-то типа обработки

Это "общий модуль" для работы с фоновыми заданиями для Ваших обработок.
cleaner_it; +1 Ответить
3. Dorosh 136 02.08.19 12:03 Сейчас в теме
Спасибо за интересный материал. Не нашел в статье ничего про настройку сервера СУБД. Какую СУБД использовали, сколько рабочих процессов делали, сколько соединений на процесс? Пробовали на отдельном сервере или кластере?
4. DarkAn 899 02.08.19 13:31 Сейчас в теме
(3) Это не играет роли для использования. Но играет для результата.

Все детали по железу изложены в стать к первой версии (https://infostart.ru/public/626117/), там есть раздел "Железо". Хотя про настройку СУБД там ни слова, но все сделано по рекомендациям курса "Оптимизация производительности" от "курсы по 1С"
5. Alien_job 164 02.08.19 14:12 Сейчас в теме
Двигающиеся слайды невозможно читать
6. DarkAn 899 02.08.19 15:17 Сейчас в теме
(5)
Двигающиеся слайды невозможно читать

Верю :)
Выложил презентацию для скачивания :)
Оставьте свое сообщение

См. также

Многопоточная обработка данных на примере перепроведения документов 41

Статья Программист Внешняя обработка (ert,epf) v8 ERP2 УТ11 КА2 Абонемент ($m) Обработка документов Практика программирования

Дальнейшее развитие темы фоновой обработки данных - проведение документов в потоках. Настройка параметров и запуск основного процесса (менеджера потоков). Разбивка документов для проведения на не связанные друг с другом наборы и запуск дополнительных фоновых заданий для отдельных потоков. Отслеживание выполнения каждого потока в родительском сеансе.

1 стартмани

17.09.2019    3119    5    ids79    28       

Кто круче: "ИЛИ" или "ОБЪЕДИНИТЬ ВСЕ" в запросе? 11

Статья Программист Внешний отчет (ert,erf) v8 v8::СПР v8::Запросы ЗУП2.5 MySQL Абонемент ($m) Производительность и оптимизация (HighLoad)

Реальный пример оптимизации запроса. Статья будет полезна людям, изучающим вопросы оптимизации запросов в 1С и для подготовки к экзамену "1С: Эксперт по технологическим вопросам", поскольку в статье описывается один их методов расследования причин неоптимальных запросов. UPD. Коллеги в комментариях заметили ошибку, она была исправлена и сейчас выложены данные с корректным решением.

1 стартмани

14.09.2019    1661    azazana    27       

"Менеджер потоков 2.0": УПП: "Восстановление партий" 4

Инструменты и обработки Программист Бухгалтер Пользователь Конфигурация (md, cf) v8 УПП1 Россия БУ УУ Платные (руб) Обработка документов

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    1094    0       

Оптимизация прав ролей 14

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8::УФ v8::Права 1cv8.cf Россия Windows Абонемент ($m) Производительность и оптимизация (HighLoad) Роли и права

Решение вопроса по неоптимальной настройке (избыточной) ролей, влияющей на производительность системы (потребление оперативной памяти). Алгоритм работы следующий: Выгрузка конфигурации в файлы - Обработка (изменение) файлов прав ролей - Загрузка измененных прав в конфигурацию. Проверено на платформе начиная с 8.3.12.

1 стартмани

09.09.2019    1975    2    toxilamer    11       

Еще один тест 1C: Postgres SQL 11 Pro Enterpise против MSSQL 14 под Windows 2012 Server R2 13

Статья Системный администратор Архив с данными v8 Windows Абонемент ($m) Производительность и оптимизация (HighLoad)

Проработав 15 лет с MSSQL в 2017 начал активно СУБД Postgres SQL. За два года успел поработать в 9 версии Postgres и в 10-ой. И пришел к выводу, что существуют реальное замедление работы баз после перехода на Postgres. Недавно вышла 11 версия Postgres Pro Enterpise, которая обещает почти 2-х кратное ускорение над 11 Pro Standart и 10-ой версией. Закупив лицензию Postgres 11 Pro Enterpise Это я и решил проверить на 1С.

1 стартмани

05.09.2019    4078    9    ogidni    84       

Ловец дедлоков СУБД 45

Статья Системный администратор Программист Архив с данными v8 Россия MS SQL Абонемент ($m) Производительность и оптимизация (HighLoad) Практика программирования Разработка

Анализ простейшего дедлока СУБД в рабочей базе с использованием ЦУП (центра управления производительностью) и profiler MS SQL (Microsoft SQL Server). Эта статья будет полезна людям, изучающим вопросы оптимизации работы 1С, или тем, у кого возникают дедлоки в рабочей базе. UPD 09.07.2019 добавлено воспроизведение блокировки в случае установки управляемой блокировки перед чтением набора записей регистра сведений. UPD 10.07.2019 добавлена тестовая база с примером.

1 стартмани

08.07.2019    6154    2    azazana    76       

Мониторинг производительности и искусственный интеллект 37

Статья Программист Конфигурация (md, cf) v8 Абонемент ($m) Производительность и оптимизация (HighLoad) Практика программирования Разработка

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

1 стартмани

01.07.2019    3886    3    ivanov660    28       

Взаимодействие при редактировании одних и тех же данных [Расширение] УТ11 6

Инструменты и обработки Системный администратор Программист Расширение (cfe) v8 УТ11 Россия Абонемент ($m) Производительность и оптимизация (HighLoad)

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

2 стартмани

14.04.2019    1738    2    noprogrammer    0       

Методика оптимизации программного кода 1С: проведение документов 83

Инструменты и обработки Программист Архив с данными v8 v8::УФ Абонемент ($m) Обработка документов Производительность и оптимизация (HighLoad) Инструментарий разработчика

Описание простого метода анализа производительности программного кода 1С, способов его оптимизации и оценки результатов в виде числовых показателей прироста производительности. Не требует сторонних программных продуктов, используются только типовые возможности платформ 1С. Методика проверена на линейке платформ начиная с 1С:Предприятие 8.2 (обычные формы, управляемые формы). Позволяет ускорить проведение проблемных документов в 3 и более раз, провести проверку корректности формирования проводок оптимизированным кодом и подтвердить результаты оптимизации реальными замерами производительности в режиме предприятия. К публикации приложены демонстрационные базы для режимов обычного и управляемого приложения на платформе 1С:Предприятие 8.3 (8.3.9.2033).

1 стартмани

19.03.2019    14075    13    dmitrydemenew    83       

Исправление ЦУП 2.1.2 1

Инструменты и обработки Системный администратор Программист Расширение (cfe) v8 1cv8.cf Windows Абонемент ($m) Производительность и оптимизация (HighLoad)

Расширение для конфигурации Центр управления производительностью, редакция 2.1 (2.1.2.11), которое позволяет настроить регламентный мониторинг. Работает на платформе 1С:Предприятие 8.3 (8.3.13.1644).

2 стартмани

21.01.2019    2227    5    Neco    0       

Многопоточное тестирование производительности по методике APDEX (управляемые формы) 12

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Производительность и оптимизация (HighLoad)

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

10 стартмани

09.01.2019    4088    8    capitan    24       

Решение проблемы быстродействия в ERP на рабочем примере 59

Инструменты и обработки Программист Конфигурация (md, cf) v8 ERP2 Абонемент ($m) Производительность и оптимизация (HighLoad)

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

3 стартмани

18.12.2018    7734    44    ivanov660    8       

Короткое нагрузочное тестирование PostgreSQL простыми запросами 25

Статья Системный администратор Программист Архив с данными v8::УФ Windows Абонемент ($m) Производительность и оптимизация (HighLoad)

Короткое нагрузочное тестирование PostgreSQL простыми запросами. Прилагаются результаты в файлах pgBadger и perfmon.

1 стартмани

10.12.2018    6461    1    vasilev2015    22       

PostgreSQL для 1С 8.3: ускоряем резервное копирование и восстановление для отдельной базы очень большого размера 108

Статья Системный администратор Программист Архив с данными v8 1cv8.cf Россия PostgreSQL Абонемент ($m) Производительность и оптимизация (HighLoad) Тестирование и исправление

В этой статье разберем оптимизацию работы с моментальным снимком отдельной базы 1С в кластере PostgreSQL средствами pg_dump.exe, pg_restore.exe, psql.exe в среде Windows Server 2008,2012,2016. А также разберем проблемные ситуации и неожиданные ограничения при работе 1С в связке с PostgreSQL. Для Linux все аналогично.

1 стартмани

03.12.2018    15962    30    vsasav    62       

Многопоточная обработка данных 44

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 v8::УФ 1cv8.cf Абонемент ($m) Производительность и оптимизация (HighLoad) Администрирование данных 1С

Конфигурация "Универсальные механизмы: пакеты данных". Набор инструментов для быстрой организации отказоустойчивой многопоточной обработки данных.

1 стартмани

23.11.2018    10531    44    _ASZ_    14       

Замер производительности. КА 2, УТ 11 1

Отчеты и формы Системный администратор Программист Внешний отчет (ert,erf) v8 УТ11 Абонемент ($m) Статистика базы данных Производительность и оптимизация (HighLoad)

Отчет позволяет замерять на актуальных базах КА2 и УТ11 (в том числе на демо-базах) три параметра: время выборки данных, время передачи с клиента на сервер, время вывода данных. Тестировал на релизах КА 2.4.1.240 и УТ 11.4.5.32.

1 стартмани

22.11.2018    3781    5    FarFar    9       

Скорость работы 1С8 файловой по сети 87

Статья Системный администратор Программист Архив с данными v8 1cv8.cf Абонемент ($m) Производительность и оптимизация (HighLoad)

Как я увеличил скорость работы файловой 1С8 по сети, изменив формат БД и размер страницы.

1 стартмани

01.11.2018    17411    11    Vlx    55       

Мониторинг показателей систем 1С 8.3 с помощью Zabbix 162

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Внешние источники данных Zabbix

Опишу свой опыт мониторинга наших систем 1С с помощью Zabbix и ту пользу, которую можно извлечить из этого.

1 стартмани

05.10.2018    20331    36    akimych    48       

Очистка и обновление индекса полнотекстового поиска (регламентное задание) 8

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 УНФ ДО БП3.0 УТ11 УХ ЗУП3.x Россия Абонемент ($m) Производительность и оптимизация (HighLoad)

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

2 стартмани

14.09.2018    10982    53    Kyrales    3       

Пересечение транзакций. Примеры 17

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

Рассматривается пересечение транзакций типа чтение-запись над одним элементом справочника при разных уровнях изоляции.

3 стартмани

03.09.2018    6933    vasilev2015    5       

Нагрузочное тестирование. В дни проведения ЧМ по футболу. 42

Статья Системный администратор Программист Архив с данными v8 Windows Абонемент ($m) Производительность и оптимизация (HighLoad)

Нагрузочное тестирование. Подготовка к экзамену 1С:Эксперт. По мотивам доклада Виктора Богачева Инфостарт Event 2014. В дни проведения ЧМ по футболу.

1 стартмани

24.06.2018    7288    3    vasilev2015    9       

Ускорение отчета 'Контроль передвижений агентов (онлайн-карты)' от AgentPlus v1.5.2 5

Инструменты и обработки Программист Руководитель проекта Внешняя обработка (ert,epf) v8 1cv8.cf Украина Абонемент ($m) Производительность и оптимизация (HighLoad) Рабочее место

У пользователей системы AgentPlus (Агент Плюс) отчет 'Контроль передвижений агентов (онлайн-карты)' v1.5.2 вызывает восторг и разочарование одновременно. Восторг – потому, что позволяет увидеть маршрут передвижения пользователя системы с привязкой к карте и дорогам, разочарование – от длительности построения отчета. Отчет по 45 точкам маршрута у меня строится больше минуты. Тестировалось на "Управление торговым Предприятием" 1.2.45.2.

1 стартмани

03.05.2018    4201    4    DiegoLidabo    0       

Многопоточность. Универсальный «Менеджер потоков» 2.0 213

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Россия Платные (руб) Производительность и оптимизация (HighLoad) Инструментарий разработчика Математика и алгоритмы Универсальные функции

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

3000 руб.

07.02.2018    66742    171    52       

В «1С:ЗУП КОРП 3.1» тормоза (медленная работа) в журналах документов при использовании критериев отбора 34

Статья Программист Нет файла v8::Запросы ЗУП3.x Абонемент ($m) Практика программирования Производительность и оптимизация (HighLoad)

Статья для тех, у кого: 1) используете RLS (ограничение доступа на уровне записей и полей), 2) много документов (более 100 тысяч в одном журнале), 3) используете «Журналы документов», 4) отборы в динамическом списке (по сотруднику). Скорее всего, Вы испытали на себе, как отбор происходит минутами (жутко тормозит) – тогда Вам сюда.

1 стартмани

04.01.2018    14868    Nykyanen    3       

Обработки  для проведения сценарного нагрузочного тестирования на примере конфигурации ЗУП версии 3.1.1.91 3

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Украина Windows Абонемент ($m) Производительность и оптимизация (HighLoad)

Обработки предназначены  для проведения сценарного нагрузочного тестирования, включая  пример описанного  сценария  с обработками (epf) -  ГлавныйРасчетчик, Кадровик, Расчетчик, Табельщик. Обработка будет полезна прежде всего тому, кто внедряет решение на базе конфигурации 1С "Зарплата и Управления персоналом" с необходимостью воспроизвести определенный сценарий с заданным количеством пользователей для расчета, а также возможность посмотреть, какая будет при этом нагрузка на ваше оборудование и скорость выполнения операций с учетом блокировок СУБД. Также это будет интересно тем, кто хочет прощупать, как на практике пользоваться конфигурацией "Тест Центр", входящий в состав пакета 1С:КИП.

2 стартмани

15.09.2017    6919    14    podorojnii_ayu    0       

Графический план выполнения запроса 1С 25

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf MS SQL Абонемент ($m) Производительность и оптимизация (HighLoad) Инструментарий разработчика Универсальные обработки

Просмотр графического отображения плана выполнения для запросов 1С. Для информационных баз на MS SQL Server.

1 стартмани

24.06.2017    11451    51    berezdetsky    26       

Перерасчет итогов регистра бухгалтерии в 1С 8

Инструменты и обработки Программист Архив с данными v8::БУ БП1.6 Россия БУ Windows Абонемент ($m) Производительность и оптимизация (HighLoad)

Вариант перерасчета итогов частями (помесячно), если при типовом пересчете 1С зависает.

1 стартмани

30.05.2017    11371    16    MarcoPolo3    1       

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов 175

Статья Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Практика программирования Математика и алгоритмы Универсальные функции Производительность и оптимизация (HighLoad)

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    38439    166    DarkAn    86       

График времени выполнения ключевой операции 12

Отчеты и формы Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ Розница ДО ERP2 БП3.0 УТ11 ЗУП3.x Абонемент ($m) Статистика базы данных Производительность и оптимизация (HighLoad)

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

1 стартмани

09.04.2017    10997    17    info1i    0       

Просмотр заблокированных строк в 1С 155

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Производительность и оптимизация (HighLoad)

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

1 стартмани

25.10.2016    32679    604    Andreynikus    54       

Настройка PostgreSQL для работы в связке с 1С 8.х на платформе Windows Server 2012, объём БД более 200 Гб 197

Инструменты и обработки Системный администратор Архив с данными v8 Россия Windows Абонемент ($m) Производительность и оптимизация (HighLoad) Администрирование данных 1С

Настройка бесплатной СУБД PostgreSQL для работы в связке с 1С 8.х на платформе Windows Server 2012 х64. Объём БД более 380 Гб для мощного сервака. Конфигурация КА 1.1.108.2, 50 пользователей. Более 1 млн. проводок при закрытии месяца. Время закрытия месяца сравнимо с MSSQL и составляет в среднем 2 часа. Время отмены закрытия месяца - всего 10 минут! Ликвидированы зависания PostgreSQL. Всё за счет настроек файла postgesql.conf.

1 стартмани

11.10.2016    60232    55    vsasav    40       

Средство поиска "узких мест" при проведении документов 6

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Производительность и оптимизация (HighLoad) Практика программирования

Обработка и добавляемые в конфигурацию коды для ведения простой для понимания статистики времени проведения документов. Пригодно для разных конфигураций на платформе 8.2

1 стартмани

31.05.2016    9745    5    ibs10    12       

Просмотр структуры БД, парсинг запросов SQL 94

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Статистика базы данных Производительность и оптимизация (HighLoad)

Получение некоторых данных о БД и сеансе, просмотр внутренней структуры таблиц БД 1С в SQL, "перевод" запросов SQL в терминологию 1С. Чуть больше, чем "ПолучитьСтруктуруХраненияБазыДанных"; чуть удобнее, чем аналоги; чуть другая, чем КИП.

1 стартмани

26.02.2016    23791    221    Yashazz    15       

Парсер технологического журнала 1С 14

Инструменты и обработки Системный администратор Приложение (exe) v8 1cv8.cf Россия Windows Абонемент ($m) Поиск данных Производительность и оптимизация (HighLoad)

Простой, шустрый и легкий в использовании off-line парсер технологического журнала 1С.

10 стартмани

06.12.2015    17387    78    sarycheff    29       

Поиск в динамическом списке (по части строки): попытка оптимизации 14

Инструменты и обработки Системный администратор Программист Архив с данными v8 УТ10 Россия УУ Windows Абонемент ($m) Производительность и оптимизация (HighLoad)

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

1 стартмани

24.11.2015    16791    2    logarifm    5       

Фиксируем SPID для отслеживания в SQL Profiler 17

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Производительность и оптимизация (HighLoad)

Для разбора запросов бывает полезным использовать SQL Profiler. При настройке выборки событий предлагаю дополнительно наложить еще один фильтр по полю SPID.

1 стартмани

22.09.2015    13349    22    break    3       

1С:Бухгалтерия 3.0. Борьба за производительность 6

Инструменты и обработки Системный администратор Программист Архив с данными v8 БП3.0 БУ Закрытие периода Абонемент ($m) Производительность и оптимизация (HighLoad)

Программисты в шоке: закрытие месяца в БП 3.0. Как закрыть ноябрь 2014 года и успеть встретить новый год.

49 стартмани

01.06.2015    9416    pit201201    21       

Тест производительности 1С 5

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 Windows Абонемент ($m) Производительность и оптимизация (HighLoad)

Глубоко убежден, что организациям с числом активных пользователей 1с большим чем 10, крайне необходимо уходить от файловых баз. И тут возникает дилемма: Какую СУБД выбрать? SQL или Postgre? Скуль хорош. Очень хорош. Практически "из коробки" он обеспечит превосходную производительность. Но стоит нереальных денег. Очень хорош... Но дорог... Очень дорог... С Постгри все сложнее. "Из коробки" мы получаем конструктор "очумелые ручки". Чтобы насладиться более-менее приемлемым результатом, придется попотеть. Зато "халява, сэр".

1 стартмани

22.04.2015    10962    14    smallbuk    22       

Сбор и анализ счетчиков производительности через 1С по шагам 8.3 95

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Производительность и оптимизация (HighLoad)

Для поиска узких мест в производительности сервера можно включить и настроить счетчики этой самой производительности «Performance Monitor». По умолчанию данные собираются и пишутся в файлы, но это не всегда удобно. Появилась задача, для которой более удобно собирать счетчики в базу данных MS SQL и позднее анализировать через 1С. Далее о том, как это настроить, и какая обработка получилась у меня.

1 стартмани

06.04.2015    30425    81    Silmariil    25       

Использование общих модулей "Длительные операции" из состава БСП или асинхронное выполнение серверных процедур без блокировки пользовательского интерфейса 128

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Производительность и оптимизация (HighLoad) Универсальные функции БСП (Библиотека стандартных подсистем)

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

1 стартмани

17.03.2015    55199    163    Bassgood    15       

Версионирование объектов. Сжатие регистра "ВерсииОбъектов" 9

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Производительность и оптимизация (HighLoad)

Cжимаем версии объектов в регистре сведений "ВерсииОбъектов". Экономия занимаемого версиями объектов объема более 50% !!!

1 стартмани

30.12.2014    24285    45    ZLENKO    14