Загрузка файла XML большого объема. Очень долго

1. Logarifm_Andre 13 18.03.22 14:58 Сейчас в теме
Имеется 1С:БП 3.0, работает в режиме клиент-сервер.

СУБД PostgresSQL.

СУБД и сервер 1С установлена одном сервере-ПК. Диски на сервере SSD, ОЗУ - 128ГБ.

Платформа 8.3.20.1710 с разрядностью х64.

Мы осуществляем загрузку данных в 1С:БП файла XML размером примерно 32Гб.

Обмен производится через типовую обработку "Универсальный обмен данными в формате XML"

В файле находятся данные с документами и их движения. Никаких сложных алгоритмов загрузки не производится.

Файл выгрузки сформирован с помощью правил обмена данными написанными на КД 2.0.

Файл выгрузки загружается в 1С:БП порядка 30часов.

Саму загрузку производим непосредственно на сервере-ПК.

Нагрузки на сервер-ПК при этом никакой фактически нет: ни на диски, ни на процессор (5-7% нагрузки), ни на ОЗУ (50% свободно).

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

Спасибо.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. Borisych 503 21.03.22 10:18 Сейчас в теме
(1) конфиг PostgreSQL оптимизирован под параметры сервера, под SSD?
10. Logarifm_Andre 13 21.03.22 10:49 Сейчас в теме
(8)
Не уверен, что это так...
Есть настройки, которые можно сделать? Гуглить конечно можно...но инфы очень много... а IT-спеца нет
12. Borisych 503 21.03.22 11:21 Сейчас в теме
(10) несколько интересных инструкций:
под SSD нужно ещё параметр = стоимости рандомного обращения выставить равным стоимости последовательного обращения к диску. об этом во втором файле указано
Прикрепленные файлы:
Измененные настройки в postgresql.conf 2018.10.01 ТЕХКОМПЛЕКТ .xlsx
Как одно изменение конфигурации PostgreSQL улучшило производительность медленных запросов в 50 раз.pdf
Настройка PostgreSQL под Linux.pdf
13. Logarifm_Andre 13 21.03.22 11:48 Сейчас в теме
(12)
Супер, спасибо Вам большое.
Буду пробовать.
14. Borisych 503 21.03.22 11:51 Сейчас в теме
17. Logarifm_Andre 13 22.03.22 12:18 Сейчас в теме
(1)
Коллеги, изменение параметров Postgres, копирование файлов на RAM-диск (баз данных, самого Postgres, так и файлов загрузки) и т.д., не дало положительных результатов увеличения производительности.

Файл порядка 460Мб грузится 40минут, в нем находятся только элементы Справочников, порядка 294000 элементов.

Начал смотреть программный код по анализу замера производительности, это привело к большому объему по времени (порядка 25минут) по записи объекта элементов справочников:

Объект.Записать();

но анализ не дал никакого результата:

- в модуле объекта события записи стандартно указано

Если ОбменДанными.Загрузка Тогда
       Возврат;
КонецЕсли;

- в самой обработке Универсального обмена также стоит галка "Загружать данные в режиме обмена", а также "Оптимизированная запись объектов"

- версионирование (БСП) для объектов не включено

- история данных платформенная также не используется

- подписок на события нет



Куда можно еще копать на стороне 1С и/или Postgre?

Спасибо.
19. nomad_irk 76 22.03.22 13:25 Сейчас в теме
(17)процессор какой используется на сервере?
само железо серверное?
Тест Гилева сколько попугаев показывает?
20. Logarifm_Andre 13 22.03.22 13:34 Сейчас в теме
(19)
Железо серверное: Xeon, 256Гб озу, быстрые SSD.
Тест Гилева не смотрел
21. nomad_irk 76 22.03.22 13:35 Сейчас в теме
(20)какой именно XEON?
Виртуализация?
22. Logarifm_Andre 13 22.03.22 13:44 Сейчас в теме
(21) Деталей не знаю, вот что в ЦП

Intel® Xeon® CPU E5-2667 v2 @ 3.30GHz

Базовая скорость: 3,30 ГГц
Сокетов: 2
Ядра: 16
Логических процессоров: 32
Виртуализация: Включено
Кэш L1: 1,0 МБ
Кэш L2: 4,0 МБ
Кэш L3: 50,0 МБ
26. nomad_irk 76 22.03.22 14:04 Сейчас в теме
(22)результаты теста Гилева увидеть бы.
starik-2005; +1 Ответить
27. Logarifm_Andre 13 22.03.22 14:07 Сейчас в теме
(26)
Не хотел копать так далеко... постараюсь сделать
2. soft_wind 18.03.22 15:15 Сейчас в теме
рекомендаций по файлу - нет,
загрузка файлов от КД2 очень медленная операция,

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

еще есть вариант соединяться по СОМ соединению и напрямую в базе приемника создавать документы

ну и для самых продвинутых, получите структуру таблиц СУБД и ее средствами грузите подготовленные данные
(вот на примере СКЛ загрузка нескольких Гигов происходит за несколько минут)
3. Logarifm_Andre 13 18.03.22 15:29 Сейчас в теме
Получается, что это проблема сугубо платформенная 1С и надо менять саму методику выгрузки/загрузки.
Нет возможности поменять схему в короткие сроки.
А вот поменять что-то на сервере есть. Имеется ввиду настройки аппаратной части и/или ПО сервера, 1С.
4. starik-2005 3060 18.03.22 18:45 Сейчас в теме
(3)
А вот поменять что-то на сервере есть.
1. Посмотрите, включена ли на сервере отладка.
2. Если включена - запустите замер производительности.
3. Посмотрите, что занимает основное время.
4. Если это запись объектов, то там есть возможность подкрутить настройки. Ищите инфу или попросите кого-нить, кто в этом понимает, помочь вам.
5. Начните делать бэкап базы минимум раз в день. А то я сколько народу видел, у которых что-то сломалось и они это неделями восстанавливали, потом плевали и ручками со старого древнего бэкапа весь учет вводили. Особенно когда постгрес на винде развернут.

ЗЫ: также есть проблемы и с самой 1С. Например, снижение производительности в ряде кейсов с течением времени. Это требует обновить платформу. Т.е. если первые 100 записей записались за 100 сек, а последние записи уже требуют по минуте, то есть куда задуматься.
6. Logarifm_Andre 13 21.03.22 09:43 Сейчас в теме
(4)
Задача разовая и хотелось найти быстрое решение...но покопавшись в деталях понял, что на это надо больше времени для понимания "как это устроено", чего сейчас позволить не могу...
Про 4 пункт понял, буду на это обращать внимание в будущем
По платформе - "свежак" стоит - 8.3.20)))
18. Logarifm_Andre 13 22.03.22 12:24 Сейчас в теме
(4)
4. Если это запись объектов, то там есть возможность подкрутить настройки. Ищите инфу или попросите кого-нить, кто в этом понимает, помочь вам.

А про какие настройки едет речь?
23. starik-2005 3060 22.03.22 13:54 Сейчас в теме
24. Logarifm_Andre 13 22.03.22 13:57 Сейчас в теме
(23)
А можно чуть раскрыть? Детали буду выяснять самостоятельно
28. Logarifm_Andre 13 22.03.22 14:09 Сейчас в теме
(25)
Вроде настройку Postgre и самого сервера сделали верно...по опыту, множеству рекомендаций и информации в интернете.
Так же перепроверяли и тестировали выгрузку изменяя различные параметры Postgre.
39. starik-2005 3060 22.03.22 16:09 Сейчас в теме
(28) а на чем основные тормоза при загрузке? Проверили?
40. Logarifm_Andre 13 22.03.22 16:20 Сейчас в теме
(39)
Тормоза при загрузке данных: Диск, ЦП, ОЗУ - простаивает при этом.
Больше времени при анализе производительности показывает Объект.Записать() - это запись справочника при загрузке.
41. starik-2005 3060 22.03.22 16:31 Сейчас в теме
(40) ну отрубите fsync на время загрузки, потом назад включите. Проверьте, на сколько увеличилась скорость.
42. Logarifm_Andre 13 22.03.22 16:34 Сейчас в теме
(41)
Пробовали - не помогает, результат практически не изменился
43. starik-2005 3060 22.03.22 17:24 Сейчас в теме
(42) странно, fsync увеличивает скорость записи. Отрубили и замер производительности никаких изменений не показал?
44. Logarifm_Andre 13 22.03.22 17:31 Сейчас в теме
(43)
Да, особых изменений не было.
Замером производительности уже не стали пользоваться, просто посмотрели на время загрузки данных.
5. Borisych 503 18.03.22 20:53 Сейчас в теме
Большие объемы - всегда долго прогружаются.
Мы когда 7 баз УПП объединяли в одну большую 320Гб платформа не вытягивала такие объемы, падала.
Мы фиксировали выгруженные данные в РС, затем довыгружали следующие порции.

Уменьшить объем никак нельзя?
Состав документов загружаемых в части оптимизации кода загрузки есть вариант рассмотреть?
7. Logarifm_Andre 13 21.03.22 09:45 Сейчас в теме
(5)
Грузить частями и параллельно на нескольких сеансах, думаю, что это сейчас самый оптимальный вариант.
Т.к. движения грузятся с самими документами и данные должны полностью совпадать.
9. Borisych 503 21.03.22 10:19 Сейчас в теме
(7) все - таки интересен момент возникновения и частоты загрузки данных размеров в 32Гб - возможно здесь стоит проработать это узкое место и грузить чаще и меньшие объемы?
11. Logarifm_Andre 13 21.03.22 10:50 Сейчас в теме
(9)
Тут скорее всего разовая работа, по крайней мере один проект.
На данном примере хочу выяснить необходимые моменты для оптимизации на будущее...
15. Vitaly1C8 21.03.22 14:50 Сейчас в теме
Как вариант - перед загрузкой: запретите выполнение фоновых заданий у целевой базы; (а лучше у всех баз на сервере) Затем сделайте рестарт служб; Еще на всякий случай - отключите соединение с интернетом (с внешним миром)
Пробуйте загружать; Не забудьте вернуть фоновые задания и включить интернет.
16. Logarifm_Andre 13 21.03.22 15:19 Сейчас в теме
(15) Доброго дня.
Спасибо, принято
29. AlexandrSmith 69 22.03.22 14:36 Сейчас в теме
Неоднократно, возникала подобная ситуация, добивался результата разрезанием файла. Писал сам обработку, при помощи которой резал, но необходимо знать какие узлы содержаться. Уверен, что можно сделать какой-то универсальный алгоритм. В моем случае, данные были однотипные.
30. Logarifm_Andre 13 22.03.22 14:39 Сейчас в теме
(29) Подскажите, для чего резать файл?
Для деления файла на порции и загрузки параллельно?
32. AlexandrSmith 69 22.03.22 14:40 Сейчас в теме
(30) Я делил на независимые узлы.
31. AlexandrSmith 69 22.03.22 14:39 Сейчас в теме
"Файл выгрузки сформирован с помощью правил обмена данными написанными на КД 2.0. " И, кстати, как вариант переделать правила обмена данных.
33. Logarifm_Andre 13 22.03.22 14:43 Сейчас в теме
(31) Пытаюсь сделать так:
1. Сначала выгружаются справочники
2. После идет выгрузка РС и т.д.

так вот есть проблема: не получается при выгрузке данных РС выгружать только ссылку на реквизит РС, выгрузка идет полностью реквизита и дальше перезапись объекта при Загрузке в приемнике.
Что делал: в ПКС реквизита писал "ВыгрузитьТолькоСсылку = Истина;"


т.е. я хотел бы при выгрузке РС не загружать справочник заново(или перезаписывать его), т.к. он уже ранее был выгружен
34. AlexandrSmith 69 22.03.22 14:47 Сейчас в теме
(33) Наверняка есть документы, а документы можно разрезать по периодам.
36. Logarifm_Andre 13 22.03.22 14:50 Сейчас в теме
(34) Этот вариант имеет место быть, его оставили на последок
37. nomad_irk 76 22.03.22 15:04 Сейчас в теме
(33)В ПКО регистра "не выгружать объекты по ссылкам"/"выгружать только ссылку", только нужно быть уверенным, что при записи в БД используется именно переданная из источника ссылка, а не присваивается новая, как любят это делать 1С в типовых конфигурациях, не редко просто так.
38. Logarifm_Andre 13 22.03.22 15:18 Сейчас в теме
(37)
Да, вот как раз для ПКО регистра "не выгружать объекты по ссылкам" и ставил - не работает
53. nomad_irk 76 18.04.23 12:44 Сейчас в теме
(38) Нужно ставить для тех ПКО, которые будут указаны для передачи ссылочных данных регистра.
Возможно, придется рядом создать "пустые" ПКО и именно их использовать для передачи данных регистра.
Заполненные ПКО использовать для передачи справочников.
35. AlexandrSmith 69 22.03.22 14:49 Сейчас в теме
(33) Я выгружал помесячные файлы, если было катастрофически много данных. Многие узлы справочников, конечно дублировались в файлах.
45. andryandry 99 22.03.22 21:26 Сейчас в теме
попробуйте развернуть базу под мс-скл (выгрузкой-загрузкой) и в ней сравнить скорость вашего импорта - возможно так импорт пройдет быстро и зальете базу в постгри назад
46. Logarifm_Andre 13 22.03.22 21:43 Сейчас в теме
(45)
Такая мысль сегодня приходила))) насколько будет быстрее только остается пробовать
Наверное стоит поиграться, вроде оба СУБД дружат параллельно на одной машине
47. Logarifm_Andre 13 23.03.22 09:58 Сейчас в теме
Всем привет.
Доработкой правил обмен данными получилось сократить время загрузки с 40 до 15минут.
Анализ производительности показывал большое время на запись объектов.
По документам и регистрам: реквизиты ссылочного типа не выгружаем полностью, а только их ссылки.

Дальше будем пробовать ставить параллельно СУБД MS SQL и тестировать скорость загрузки на нем, возможно и тут будет ускорение.
48. Lazio 8 18.04.23 11:09 Сейчас в теме
(47)
Добрый день! Тоже столкнулся с проблемой распухшего файла при выгрузке из базы, пытаюсь оптимизировать правила обмена. Подскажите пожалуйста какие настройки дали результат?
49. nomad_irk 76 18.04.23 11:44 Сейчас в теме
(48)Пробуйте:
В ПКО "не выгружать объекты по ссылкам"/"выгружать только ссылку" и объекты ссылочного типа выгружать отдельными ПВД.
50. nomad_irk 76 18.04.23 12:15 Сейчас в теме
(49)Особенно касается иерархических справочников: для родителя создать отдельное ПКО
51. Lazio 8 18.04.23 12:18 Сейчас в теме
(49)
Выгружать только ссылку это какая галочка?
52. nomad_irk 76 18.04.23 12:22 Сейчас в теме
(51)
Прикрепленные файлы:
54. balbinab 31.05.24 15:12 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот