Имя: Пароль:
1C
1С v8
УТ 11, выгрузка на сайт.. Недостаточно памяти (Порции всего по 5000 позиций)
, ,
0 nodrama
 
07.09.22
12:20
Доброго времени суток. Тестил выгрузку номенклатуры и цен на сайт... и че то словил ошибку ля ля ля недостаточно памяти и т.д.
на сервере 160 гигов оперативки. 48 гигов еще виртуальной подкачке. на дисках свободно по 500 гигов на каждом (С,Д).
Если в обмене с сайтом, отобрать допустим номенклатуру конкретную папку (где скажем 500-1000 штук не важно) то все выгружается нормально. но папок сотни, выгружать по папкам смысла особого нет.
Я поставил "Порционную выгрузку". Поставил там по 5000 в одной порции.. вроде не много.  (всего около 100к номенклатуры с ценами).. через пол дня "думанья".. вылетело с ошибкой ляляля не достаточно памяти и т.д.
На сайте ни чего ессесно не появилось. я так понимаю что ... 5000 в одной порции.. не значит что он сделает 5000 и сразу загрузит на сайт потом еще 5000... он сначала сделает фигову тучу порций по 5000, а потом все что сделал будет по 5000 грузить на сайт вроде как.. но все равно не понятно с чего ему не хватает памяти и что делать в данной ситуации ?
Я конечно запустил порции по 500 теперь а не по 5000, но не думаю что это изменит картину
1 Ager
 
07.09.22
12:27
Сначала делается запрос по всем товарам, потом они бьются на порции. Скорее всего на этапе формирования запроса памяти не хватает. Либо оптимизировать запрос, либо делать отборы и выгружать частями.
2 Ryzeman
 
07.09.22
12:30
(0) Запрос отдельно запускал? У нас джейсоны по 50к туда-сюда летают в секунды. По-любоу кросс джоин где-нибудь не усмотрел
3 nodrama
 
07.09.22
12:30
(1) Так там есть "кнопка" рядом с выгрузкой.. лупа.. типо посмотреть что отобралось и будет выгружаться.  с теми параметрами что ты установил (отборы там и т.д.) ну или не установил. аля зарегистрированные к обмену...
Если ее нажать... да думает прилично.. ну может минут 20...номенклатуры полно.. Но показывает же...
Думаю при выгрузке там точно такой же запрос... следовательно должнен отрабатывать
4 nodrama
 
07.09.22
12:31
(2) так это типовой функционал УТ 11 (типовая).
отдельно запрос не запускал.. но жал кнопку "посмотреть номенклатуры к регистрации" и он мне вываливал список из 100к++ позиций
5 Ryzeman
 
07.09.22
12:33
(4) ну... типовая может работать криво или как минимум не оптимально, особенно если база доработана сильно. У нас сейчас не типовые обмены. Да и на прошлой работе тоже сразу типовой обмен переделали (правда я там сбоку был)
6 nodrama
 
07.09.22
12:37
(5) Ну если кнопка "показать зарегеные обьекты" которые будут в выгрузке.. Работает и выводит список.. без ошибок.
Там же при "выполнить обмен" такой же запрос. он так же отбирает объекты просто не выводит их в показ) а грузит на сайт.
поэтому я и подумал что если показать что зарегено работает, то и обмен должен (запрос) точнее отработать. там же одно и то же количество то что посмотреть что выгрузить..
7 Ryzeman
 
07.09.22
12:39
(6) Гм. Там случайно не пуляет по одному товару через новый HTTP-запрос?.. Ну мало ли
8 Ryzeman
 
07.09.22
12:39
Хотя при чём тут память на сервере
9 Kassern
 
07.09.22
12:44
(0) "на сервере 160 гигов оперативки" - сколько из нее свободной в мониторинге?
10 nodrama
 
07.09.22
12:45
(9) В данный момент свободной 101 из 160
11 Галахад
 
гуру
07.09.22
12:46
Насколько я помню там все данные загоняются в единый объект.
А уж потом порционно или нет пишется в файлы.
12 nodrama
 
07.09.22
12:47
(11) у нас стоит прямая загрузка на сайт, без выгрузки в файлы, а потом эти файлы руками загружать не сайт..
тут я хз.. при прямом обмене он пишет файлы или сразу грузит на сайт хз
13 Kassern
 
07.09.22
12:47
(10) Замер производительности делали? Смотрели, что там в коде выполняется? Сервер и клиент 64битный надеюсь? ТЖ настраивали?
14 Kassern
 
07.09.22
12:48
15 Галахад
 
гуру
07.09.22
12:48
(12) Конечно пишет.
16 Kassern
 
07.09.22
12:50
(12) Вы про битрикс? Вроде там создаются пакеты файлов, потом еще и архивируются и шлются на сервак, где сайт.
17 nodrama
 
07.09.22
12:51
Ошибка дословно "Превышен максимальный расход памяти сервера за один вызов"
18 Kassern
 
07.09.22
12:54
(17) в яндексе пробовали вбить эту ошибку, или сразу на Мисту написали?))
19 nodrama
 
07.09.22
12:55
(18) я только ее в журнале нашел ;)
20 Kassern
 
07.09.22
12:55
У вас в кластере стоит ограничение на расход, типа, чтобы тяжелые запросы с декартовым произведение таблиц не выжирали всю память на серваке криворуким джуном.
21 timurhv
 
07.09.22
12:56
(0) 1С плевать на размер файла подкачки
22 nodrama
 
07.09.22
12:57
(20) это я уже прочитал.. нужно место "0" поставить "1". попробую
23 nodrama
 
07.09.22
12:57
но тут другой вопрос.. (20)  а хватит ли памяти потом в итоге если убрать то ограничения в класторе )) покажут видимо только тесты
24 Kassern
 
07.09.22
12:58
(23) купите лицензию КОРП и крутите вертите памятью как вам угодно в рамках кластера)
25 timurhv
 
07.09.22
12:59
(22) -1 вроде, а не 1.
Проблема в данных, либо в процедурах выгрузки \ запросах.
26 nodrama
 
07.09.22
13:00
(25) тветственны за эту ошибку настройки сервера 1С. В них есть параметр «Безопасный расход памяти за один вызов», и если его не меняли, по умолчанию там стоит параметр «0». Чтобы убрать ограничение, нужно установить иное значение параметра, например – «1»

Вроде в статье написано 1
27 nodrama
 
07.09.22
13:01
А в другой статье -1  ))... поверим второй
28 nodrama
 
07.09.22
13:03
Поставил -1.. перезапустил службу сервера 1с.. потестим
29 timurhv
 
07.09.22
13:03
(25) Временно допустимый объем памяти процессов = 70% от ОЗУ
Безопасный расход памяти за один вызов = 10% от параметра выше.

Получается 1.1Гб за один вызов. Скорее всего, либо данные кривые, либо запрос без нормальных отборов.
(27) Смотрите ИТС
https://its.1c.ru/db/v8321doc#bookmark:cs:TI000000158
30 nodrama
 
07.09.22
13:04
(29) так запрос и без отборов.. мы хотиле Всю номенклатуру добавить на сайт. без отборов и т.д.
31 timurhv
 
07.09.22
13:05
(28) Зря, сожрет все. У вас данные кривые, либо запрос править. Полдня не может выгружаться 100к позиций с ценами.
32 timurhv
 
07.09.22
13:05
(30) Посмотрите соединения в запросах
33 timurhv
 
07.09.22
13:07
Я к тому что у нас на 8Гб серваке за раз выгружаются по 300тыс марок в WMS по SOAP, еще 80 пользователей сидят работают. Проблем нет.
JSON еще меньше потребует ресурсов.
34 nodrama
 
07.09.22
13:10
Кстати там в типовом обмене при выборе че выгружать.. в отборах.есть 2 поля  Вторая закладка которая
Группы номенклатуры.. там можно выбрать группа (список групп).. а последняя колонка Отбор номенклатуры более точный. я же правильно понимаю что они взаимозаменяются
если я выбрал группу номенклатуры допустим "Стул".. то в отборе мне не надо ставить группу Стул ?
или если я в отборе уже выбрал группу Стул, то в группе номенклатуры мне уже не надо ставить стул ?
или они должны быть одинаково заполнены ?
35 Kassern
 
07.09.22
13:27
(34) Все ваши отборы в конечном итоге всего лишь регистрируют изменения в план обмена. Можете легко проверить как отрабатывают условия.
36 Мультук
 
гуру
07.09.22
13:40
(0)

100к номенклатуры в Битрикс, без настройки, без тюнинга "тонких мест" ?
Только вера в большой толстый сервер и широкий интернет ?

Имхо, не будет оно так работать.
37 Мультук
 
гуру
07.09.22
13:49
(0)

Копать можно начинать с
Б_ОбменССайтомСерверВыгрузкаДанных.ФормированиеПакетовДанных(...)

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

P.S.
Кстати, на 40к номенклатуры (без картинок) на x64 УТ 11.4 у нас не падает т не падало.
Возможно, у вас как не в себя характеристик и видов цен, которые вы выгружаете на сайт.
Выгружайте только нужные виды цен.


P.P.S.
Смешной коммент из указанной функции.
Кто-то всё еще думает что неработающее условие NULL = &П это бага.

// бага в платформе..
ТекстЗапроса = Запрос.Текст;  
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "NULL = &П ", "ИСТИНА = ИСТИНА ");
38 nodrama
 
07.09.22
14:37
(36) У них не Битрикс ;)
39 Krendel
 
07.09.22
18:33
(24) Это не в корпе дело, а в загрузке выгрузке
40 Гений 1С
 
гуру
07.09.22
18:36
(0) точнее текст ошибки надо цитировать. У меня недавно на постгри было об ошибке памяти, оказалось сервачко дохлый
41 Deal with it
 
07.09.22
18:43
(0) у нас ут 11.4, также пробовали выгружать на сайт типовым обменом, но это занимало слишком много времени, т.к. макет "СхемаВыгрузкиКаталогПакетПредложений" в плане обмена не оптимален и оооочень долго выполняется. Поэтому отказались от типового механизма и запилили свой, с блекджеком и куртизанками...
Вы просто сами поставьте точку остановы в плне обмена в моменте где он формирует таблицу цен для выгрузки и смотрите как процесс жрет память и самое главное ваше время.
42 Deal with it
 
07.09.22
18:45
+(41) и да, на количество порций при выполнении макета скд ему плевать, он уже результат выполнения будет разбивать на части для отправки, а сам макет возьмет все данные по установленному отбору.
43 nodrama
 
08.09.22
12:45
(42) Короче выгрузку загрузку я победил, ошибок больше нет.
Остался вопрос... Правильно ли я понимаю, в типовой (ну уже не очень типовой). выгрузке, по порциям... Когда на сайте уже начинают появлятся эти "порции" номенклатуры. Значит он в 1с уже все сделал все отобрал сформировал и дальше уже зависит скорость от самого сайта/интернета/хостинга и т.д?
44 nodrama
 
08.09.22
12:47
Просто теперь проблема другая... раньше он на сайт ни чего даже не добавлял вылетат с ошибкой памяти.. это я подправил. теперь он все отбирает бьет на порции и т.д. и на сайте появляются товары следовательно. только вопрос в том.. что они появляются как то подозрительно медленно... то есть смотришь там 10.000 товаров. обновляешь страницу там 10.020 товаров.. как то не шипко быстро
45 Deal with it
 
08.09.22
12:49
(44) тут надо замерять время с момента получения фала на сайте и поялвением порции номенклатуры, а если нет такой возможности, то хотя бы с момента отправки файла с процией из самой 1с и моментом появления этих позиций на сайте.
46 Deal with it
 
08.09.22
12:50
мы замеряли так: сохраняли фа1йл выгрузки из 1с, загружали его на сайт и смотрели как быстро грузит уже сам сайт. Проггер уже потом правил загрузку на сайте, оптимизировал разбор файла и все такое.
47 Deal with it
 
08.09.22
12:51
таким образом оптимизация была двухсторонней. Сначала в 1с ускорили выгрузку, затем и на сайте загрузку.
48 Deal with it
 
08.09.22
12:52
в итоге все равно переходим на битрикс сайт))) там уже все оптимизировано за нас(ну почти).
49 timurhv
 
08.09.22
13:22
(43) >Короче выгрузку загрузку я победил, ошибок больше нет.
Что в итоге сделали? Поправили запрос? Или настройка кластера серверов?