Имя: Пароль:
1C
 
Очень медленная работа ComConnector
0 BlackRoija
 
30.01.19
22:43
Уважаемые, среднее время работы предлагаемого кода на любой машине и на любой версии 1с примерно 1 сек.
(база любая, хоть типовая, хоть совсем пустая, хоть в файловом, хоть в серверном режимах)
Вопрос: что может быть неправильно установлено или настроено на сервере, из-за чего данный код работает в ОДИННАДЦАТЬ (!) раз дольше?? перепробовал штук пять платформ 1с, и файл и сервер режимы, и 32 и 64 режимы, класс V83.COMConnector зарегистрирован как обычно. Сервер 2012 R2 Standard, захожу как админ. В какую сторону копать??
(само соединение примерно 1-2 сек, что нормально)

        КаталогСБазой = "D:\TestDB\";
    Пользователь = "";
    Пароль = "";
    
    КОМ = Новый COMОбъект("V83.COMConnector");
    Коннекция = КОМ.Connect("File=" + КаталогСБазой + ";Usr=" + Пользователь + ";Pwd=" + Пароль + ";");    
    
    М = Коннекция.NewObject("Массив");
    
    ВремяНачала = ТекущаяДата();
    Для Счетчик = 1 По 100000 Цикл
        М.Добавить(123); // 100000 обращений через ComConnector        
    КонецЦикла;                              
    ВремяОкончания = ТекущаяДата();
    
    Сообщить("" + (ВремяОкончания - ВремяНачала) + " сек.");
1 H A D G E H O G s
 
30.01.19
22:52
Это норма.
2 vis_tmp
 
30.01.19
23:07
(1)А почему?
3 palsergeich
 
30.01.19
23:13
(0) Потому что ты через задницу в другой базе управляешь ее языком (алегория).
4 palsergeich
 
30.01.19
23:16
А если задницы нет (os linux, mac os), то вообще ничего не выйдет.
5 palsergeich
 
30.01.19
23:18
Ща прибегут Гуру всякие расскажут об устройстве ОС, всякие межпроцессные маршалинги и прочую муть, но суть от этого не изменится.
6 BlackRoija
 
30.01.19
23:24
(1) Пользователи говорят что программа стала работать в 11 раз медленнее, вот это ненормально (код, конечно же, приведен просто для примера)
7 palsergeich
 
30.01.19
23:25
(6) Не используй COM в критичных операциях, все просто.
Com is depricated
8 palsergeich
 
30.01.19
23:26
Там нелинейная зависимость скорости в зависимости от количества передаваемых данных.
И много чего еще.
9 palsergeich
 
30.01.19
23:27
(7) Com is deprecated тьфу опечатался
10 H A D G E H O G s
 
30.01.19
23:33
COM еще всех вас переживет.
11 BlackRoija
 
30.01.19
23:34
(7) "не используй ком" в данном случае не подходит
12 palsergeich
 
30.01.19
23:36
(10) То что на него завязано очень много легаси лишь продлит аггонию.
Даже тяжелый корп сектор и тот потихоньку от наследия 90х освобождается.
13 H A D G E H O G s
 
30.01.19
23:37
(11) Вызывай 1 раз метод COM-а, передав ему все данные файлом.
14 H A D G E H O G s
 
30.01.19
23:38
(12) Ты просто не знаешь, что такое COM.
15 palsergeich
 
30.01.19
23:39
(14) Я просто вижу массовый переход на Linux всякий, нас в этом году в том числе хотят переводить. А там этого просто нет.
16 H A D G E H O G s
 
30.01.19
23:42
(15) Это в лучшем случае "выход в свет" - легалайз, в худшем - глупость админов в бородах и смузи.
17 H A D G E H O G s
 
30.01.19
23:43
(16) И нет здравого ИТ директора, который гнал бы с предприятия всех этих любителей виртуалок, линуксов и прочей херни.
18 palsergeich
 
30.01.19
23:45
(16) Не могу сказать истинные причины, они нам не доводятся. Но не легалайз, ибо и так все легально, и не смуззи, ибо такие вещи затратны и без соответствующего обоснования не прошли.
(17) В банке то? Не думаю.
19 BlackRoija
 
30.01.19
23:51
(13) код нельзя переделать. это экзешник. (1с вызывается через comconnector из программы написанной на другом языке программирования)
20 palsergeich
 
30.01.19
23:51
Вот с этого и надо было начинать
21 palsergeich
 
30.01.19
23:52
А у этого экзешника есть документация? Может там есть что про параметры командной строки?
22 palsergeich
 
30.01.19
23:54
Или может к этому софту еще как нибудь можно обратиться?
Com часто не единственный интерфейс взаимодействия
23 BlackRoija
 
30.01.19
23:56
(21) так дело даже не в экзешнике, а в чистом 1с коде приведенном для примера - раньше он отрабатывал за 1 сек (сами можете у себя попробовать ради интереса), а стал за 11 сек. админы говорят что с сервером ничего не делали
24 Fram
 
31.01.19
01:19
(23) а что значит "раньше"? какие то версии платформы имеются ввиду?
25 rphosts
 
31.01.19
03:09
(2) Оля/Кома - самый тяжелый механизм окошек. твой ком - новый экземпляр 1С... правда без визуального интерфейса.

И вообще у тетя код 1С запускается 1С(екунду) - ПОЗДРАВЛЯЮ!!!
26 craxx
 
31.01.19
03:46
(0) переходи на web-сервисы или http-сервисы.
27 BlackRoija
 
31.01.19
08:51
(24) была 8.3.10.2667, поставили 8.3.13.1513, стало тормозить. поставили обратно 8.3.10.2667 - тормозит точно так же. может где-то что-то подчистить надо, может поднастроить, предыдущий админ уволился, наверняка знал какой-то секрет
28 palsergeich
 
31.01.19
09:18
(27) и этот важный момент опущен.
Давай дальше.
Точно ничего кроме платформы не менялось?
Com дико привередлив к качеству сети.
29 palsergeich
 
31.01.19
09:18
А то окажется в следующем сообщении а ещё и сервер из РФ переехал в Данию.
30 Мыш
 
31.01.19
09:23
Интересно, что за программа такая, вызывающая 1С? И на смену платформы ей пофиг даже )
31 OldCondom
 
31.01.19
09:25
Потрать время с пользой: вместо поиска решения с com займись созданием web сервиса. Тоже одно время возился с обменом и сверкой баз по com. Это как факс в мире коммуникаций.
32 Мыш
 
31.01.19
09:31
(31) Или http-сервис )
33 BlackRoija
 
31.01.19
09:46
(30) так на то он и COM чтобы всегда, везде и отовсюду работать) в пределах windows конечно)
34 BlackRoija
 
31.01.19
09:47
(28) админы говорят что ничего не меняли
35 BlackRoija
 
31.01.19
09:52
(31) да была бы копеечная программа разговору бы не было..
36 palsergeich
 
31.01.19
09:56
Можно потыкать галочки наудачу в настройках dcom.
Я просто только вечером в них зайти смогу, по моему в одной из статей я натыкался на хитрость, но это было давно и я уже не помню.
37 palsergeich
 
31.01.19
09:58
Только для чистоты эксперимента ребут машины делай. Иногда применяется без перезапуска, а иногда нет.
38 wowik
 
31.01.19
09:59
(0) написать цикл в одну строчку, немного быстрее будет работать.
39 palsergeich
 
31.01.19
10:01
(38) давным давно доказано что это работает только при запущенной отладке)
40 BlackRoija
 
31.01.19
10:01
(36) именно dcom? например в закладке с com+ я уже всё поперетыкал что можно
41 palsergeich
 
31.01.19
10:06
Com+ верно
42 kabanoff
 
31.01.19
10:10
(0) Есть предположение, что при обращении к COM-объекту платформа гоняет его между базами. Вот и получается, что массив М ходит туда-обратно в цикле.
Ради интереса, попробуй разместить файловую базу по сети, а вместо массива - используй какую-нибудь таблицу с 10 колонками и посмотри нагрузку на сеть.

Как уже подсказали в (13), COM-объект лучше использовать 1 раз, передав ему сразу готовый массив. Например, вот так:

Значение = ЗначениеВСтрокуВнутр(ЛокальныйМассив);
УдаленныйМассив = Коннектор.ЗначениеИзСтрокиВнутр(Значение);
43 wowik
 
31.01.19
11:12
(39) при запущенной отладке на сервере? можно ссылку с доказательством?
44 BlackRoija
 
31.01.19
13:10
(43) без запущенной отладки. доказательство чего?
45 Nirvana
 
03.02.19
22:57
(27) Рекомендую всё же проверить, какую версию использует сам COM-connector. Что-то там изменили по части их установки в пакетах последних релизов.
46 vde69
 
03.02.19
23:05
вангую - дело в файле nethasp.ini

ps
банально долго лицензию ищет... раньше стоял кряк, установили новую платформу (она с кряком не работает)