Имя: Пароль:
1C
1С v8
1С использует ресурсы сервера на 25%
0 Tester
 
29.09.18
12:00
Все привет.
В 1С 8.3.10 выполняется длительная операция > суток. При этом ресурсы сервера (в данном случае CPU) используются на 25%. Есть ли возможность понять какое узкое место на сервере и увеличить скорость работы 1С?
https://d.radikal.ru/d34/1809/95/a5d4723ae245.jpg
https://d.radikal.ru/d04/1809/95/d43ae538606d.jpg
1 Aleksey
 
29.09.18
12:07
А что ты ожидал увидеть? 1С одноядерное приложение и больше 1-го ядра за раз не может использовать
2 Cool_Profi
 
29.09.18
12:09
Одноядерный процессор поставь и наслаждайся загрузкой
3 Cool_Profi
 
29.09.18
12:11
+ (0) скажи, а точно радикальный противник использования кнопки PrtScr?
Тебе религия не позволяет? Или внутренние убеждения? Или, может СБ тебе туда 380 вольт подключила?
4 Tester
 
29.09.18
12:11
(1) 2-й скрин да, один процесс грузит полностью одно ядро. 1-й скрин сумма загрузки процессами ядер тоже около 25%. Неужели нет вариантов?
5 Aleksey
 
29.09.18
12:12
(4) Я понять не могу что за 1С у тебя

Судя по второму это файловая, тогда причем тут 1 скрин?
6 Tester
 
29.09.18
12:12
(3) может у меня сервер вне внешней сети и интернета?!
7 Aleksey
 
29.09.18
12:13
(6) И ты снимаешь через окошко на улице? Какая религия запрещает сделать скриншот на той машине что сидишь?
8 Tester
 
29.09.18
12:14
(5) да, 1-й скрин это серверная, 2-й это файловая.
9 Aleksey
 
29.09.18
12:15
(8) Так сколько 1С у тебя запущено и что ты ускорить собираешься?
10 lodger
 
29.09.18
12:17
(0) 1 ядро на проце - вот твое узкое место.
варианты лечения: взять процессор помощнее (чтобы отдельное ядро было значительно сильнее).
распараллелить нагрузку. если позволяет задача - запустить (число потоков минус 1) инстанца, чтобы каждое ядро повисло на 100% загрузке.
11 lodger
 
29.09.18
12:18
ну и все от задачи зависит. в 99.59% случаев такие проблемы решаются исправлением запроса, оптимизацией обработки данных.
12 Tester
 
29.09.18
12:19
(9) на 1-м скрине одна 1С запущена серверная, на 2-м запущено две 1С, действия выполняет только файловая.
Хочу, чтобы использовала ресурсы сервера. Из 4-х ядер используется одно, как серверной так и файловой версией. Давали 36 ядер, загрузка проца 3-4%.
13 Tester
 
29.09.18
12:22
(10) Уже лет 10 мечтаю, что появятся процессоры, в которых вырастет многократно мощность одного ядра. Либо ПО начнет использовать нормально ядра. Речь в теме есть ли варианты ускорить работу без оптимизации алгоритмов и распараллеливания запросов и т.п. в самой 1С?
14 Aleksey
 
29.09.18
12:23
(12) При таком описании максимум что ты можешь услышать это (11)

Какое оборудование, какая задача.

Одно дело когда пишутся в справочник линейно данные и тут сложно программно ускорить.
Другое дело когда идет выборка и тут можно смотреть план запроса, попадает ли выборка в индексы
15 Aleksey
 
29.09.18
12:24
(13) Да увеличить частоту процессора. Заменой или разгоном
16 Tester
 
29.09.18
12:29
(14) В 1С в этот момент (2-й скрин) выполняется ПланыОбмена.ПрочитатьИзменения(). Читается xml файл размером 23 Гб. Т.е. оптимизация кода в данном случае в 1С невозможна.
17 Cool_Profi
 
29.09.18
12:44
(16) Если у тебя накопилось изменений на 23ГБ - это не проблемы 1с. Это проблемы настройщиков обмена
18 Остап Сулейманович
 
29.09.18
12:48
Итить колотить... 23 Гб...
Признайся - сколько по времени такой обмен формируется?
19 Tester
 
29.09.18
12:54
(17) а если мне нужно развернуть узел из центра, в котором за 2 года работы куча объектов накопилось, которые необходимы в новом узле?
(18) xml-файл формируется около 12 часов. Читается в несколько раз дольше. Вот это и хотелось бы ускорить. А так хоть 100 ядер выделяй и пол терабайта ОЗУ толку нет.
20 Cool_Profi
 
29.09.18
15:15
(19)
Существует куча способов создать узел, не прибегая к штатной выгрузке
21 Tester
 
29.09.18
16:06
(20) Как мне создать новый узел, выгрузив в него пол миллиона элементов номенклатуры, тысячи контрагентов, данные из десятков прочих справочников, тысячи документов не прибегая к штатной выгрузке, чтобы при этом ускорился общий процесс сколь либо значительно?
22 Aleksey
 
29.09.18
16:12
23 Tester
 
29.09.18
16:20
(22) спасибо за ссылку, но из центральной базы 500 ГБ сделать копию и очистить гигов 450 будет наверное дольше, чем создать периферийный 50 гиговый узел штатными средствами.
24 Фрэнки
 
29.09.18
17:07
(23) даже если тобой будет проведено исследование разных приложений, то ты удивишься - почти абсолютное большинство приложений не умеет использовать более одного ядра при создании всего одного процесса. Можешь из интереса посмотреть при запущенном браузере с множеством вкладок на количество созданных процессов браузера. Можешь посмотреть сколько процессов создает скайп и т.д.
В этом смысле приложения 1С ничем не лучше. Представь, что открытый только один сеанс пользовательский = одной вкладке браузера...
Другими словами, распараллеливание длительных операций, если это реализовано типовыми способами, до делается запуском фоновых ПРОЦЕССОВ. И вот тогда можно увидеть, что эти процессы садятся на разные ядра. Но! При работе в клиент-серверном режиме нужна правильная настройка 1С кластера серверов.

з.ы. В твоем частном случае этого распараллеливания нагрузки не сделаешь.
25 Фрэнки
 
29.09.18
17:09
25% в среднем - использование 1 ядра на 4-ех ядерном процессоре (ядра могут быть и виртуальными тоже)
3-4% на 36 ядерном - это тоже загрузка только одного из 36-ти ядер
26 Tester
 
29.09.18
18:02
(24) спасибо, хорошо описал! Итого единственный вариант - это распараллеливание выгрузки и загрузки объектов с помощью отдельных сеансов работы 1С либо фоновых заданий. В серверном варианте, возможно, придется увеличивать количество rphost'ов ограничивая число соединений.
27 Aleksey
 
29.09.18
18:18
(26) в общем случае бред и практически не реализуемая задача
28 Aleksey
 
29.09.18
18:27
Грубо говоря таблица изменений и таблица планов обмена одна на объект и на ней нельзя наложить "гибкие" блокировки.
А значит выгружая номенклатуру в одном сеансе платформа будет блокировать всю таблицу изменений номенклатура (так как она будет туда писать номер выгружаемого пакета) и другой сеанс нарвется на "блокировку" и выпадет в ошибку транзакции.
Даже если предположить что мы будет в каждом сеансе выгружать "свой" объект то во первых таблица планов обмена одна и значит при выгрузки пакета он будет писать туда номер выгруженного пакета, а значит если два параллельных пакетах попытаются записать туда очередной номер, то несложно догадаться что будет в этом случае.
И это мы еще упускаем из виду тот факт что типовыми средствами такой сценарий нельзя будет реализовать.
Типовой сценарий подразумевает что выгружаются в пакете все изменения и если потом прилетает подтверждение, то значит все считается что все пакеты до этого номера успешно загружены.
Например выгрузили номенклатуру, пакету присвоится номер 42. Выгрузили контрагентов - номер 43. При загрузки подтверждения с номером 43 1с будет считать что пакет 42 тоже успешно загружено. Т.е. нельзя выборочно подтвердить пакет.

Вот именно поэтому народ отказывается от типового механизма и реализовывает свой, например на РС, где можно наложить и блокировку и выборочное подтверждение
29 H A D G E H O G s
 
29.09.18
19:36
(28) Чет дичь какая-то.
30 H A D G E H O G s
 
29.09.18
19:37
Щас проверим.
31 H A D G E H O G s
 
29.09.18
19:54
А не, все верно. Я перепутал с записью 2 элементов справочника.
32 DmitrO
 
29.09.18
20:22
Предлагаю.
При создании набора данных для начальной загрузки не надо работать с регистрацией изменений вообще.
Надо сначала просто создать узел (только сам объект узла), чтобы началась регистрация изменений от транзакций в этой базе.
Далее надо просто выгружать все подряд, что необходимо для нового узла по условиям обмена (повторю, без всякой работы с таблицами регистрации изменений).
Потом сделать загрузку данных в новой базе (нового узла) с полученного набора данных.
После этого уже запускать обмен по традиционному регламенту.

У меня например так и работает.
33 DmitrO
 
29.09.18
20:29
(32)+ при этом обе задачи как выгрузки, так и загрузки, хорошо и не сложно параллелятся разными сеансами, при условии формирования нескольких файлов.