Загрузка файла 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 71 22.03.22 13:25 Сейчас в теме
(17)процессор какой используется на сервере?
само железо серверное?
Тест Гилева сколько попугаев показывает?
20. Logarifm_Andre 13 22.03.22 13:34 Сейчас в теме
(19)
Железо серверное: Xeon, 256Гб озу, быстрые SSD.
Тест Гилева не смотрел
21. nomad_irk 71 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 71 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 3033 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 3033 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 3033 22.03.22 16:09 Сейчас в теме
(28) а на чем основные тормоза при загрузке? Проверили?
40. Logarifm_Andre 13 22.03.22 16:20 Сейчас в теме
(39)
Тормоза при загрузке данных: Диск, ЦП, ОЗУ - простаивает при этом.
Больше времени при анализе производительности показывает Объект.Записать() - это запись справочника при загрузке.
41. starik-2005 3033 22.03.22 16:31 Сейчас в теме
(40) ну отрубите fsync на время загрузки, потом назад включите. Проверьте, на сколько увеличилась скорость.
42. Logarifm_Andre 13 22.03.22 16:34 Сейчас в теме
(41)
Пробовали - не помогает, результат практически не изменился
43. starik-2005 3033 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 68 22.03.22 14:36 Сейчас в теме
Неоднократно, возникала подобная ситуация, добивался результата разрезанием файла. Писал сам обработку, при помощи которой резал, но необходимо знать какие узлы содержаться. Уверен, что можно сделать какой-то универсальный алгоритм. В моем случае, данные были однотипные.
30. Logarifm_Andre 13 22.03.22 14:39 Сейчас в теме
(29) Подскажите, для чего резать файл?
Для деления файла на порции и загрузки параллельно?
32. AlexandrSmith 68 22.03.22 14:40 Сейчас в теме
(30) Я делил на независимые узлы.
31. AlexandrSmith 68 22.03.22 14:39 Сейчас в теме
"Файл выгрузки сформирован с помощью правил обмена данными написанными на КД 2.0. " И, кстати, как вариант переделать правила обмена данных.
33. Logarifm_Andre 13 22.03.22 14:43 Сейчас в теме
(31) Пытаюсь сделать так:
1. Сначала выгружаются справочники
2. После идет выгрузка РС и т.д.

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


т.е. я хотел бы при выгрузке РС не загружать справочник заново(или перезаписывать его), т.к. он уже ранее был выгружен
34. AlexandrSmith 68 22.03.22 14:47 Сейчас в теме
(33) Наверняка есть документы, а документы можно разрезать по периодам.
36. Logarifm_Andre 13 22.03.22 14:50 Сейчас в теме
(34) Этот вариант имеет место быть, его оставили на последок
37. nomad_irk 71 22.03.22 15:04 Сейчас в теме
(33)В ПКО регистра "не выгружать объекты по ссылкам"/"выгружать только ссылку", только нужно быть уверенным, что при записи в БД используется именно переданная из источника ссылка, а не присваивается новая, как любят это делать 1С в типовых конфигурациях, не редко просто так.
38. Logarifm_Andre 13 22.03.22 15:18 Сейчас в теме
(37)
Да, вот как раз для ПКО регистра "не выгружать объекты по ссылкам" и ставил - не работает
53. nomad_irk 71 18.04.23 12:44 Сейчас в теме
(38) Нужно ставить для тех ПКО, которые будут указаны для передачи ссылочных данных регистра.
Возможно, придется рядом создать "пустые" ПКО и именно их использовать для передачи данных регистра.
Заполненные ПКО использовать для передачи справочников.
35. AlexandrSmith 68 22.03.22 14:49 Сейчас в теме
(33) Я выгружал помесячные файлы, если было катастрофически много данных. Многие узлы справочников, конечно дублировались в файлах.
45. andryandry 94 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 71 18.04.23 11:44 Сейчас в теме
(48)Пробуйте:
В ПКО "не выгружать объекты по ссылкам"/"выгружать только ссылку" и объекты ссылочного типа выгружать отдельными ПВД.
50. nomad_irk 71 18.04.23 12:15 Сейчас в теме
(49)Особенно касается иерархических справочников: для родителя создать отдельное ПКО
51. Lazio 8 18.04.23 12:18 Сейчас в теме
(49)
Выгружать только ссылку это какая галочка?
52. nomad_irk 71 18.04.23 12:22 Сейчас в теме
(51)
Прикрепленные файлы:
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)