Тормоза при большом количестве одновременно запущенных COM-объектов

1. Ivon 676 03.01.25 15:34 Сейчас в теме
Добрый день.
Проблема следующая. Есть самописная большая конфа, которая использует много разных СОМ-объектов.
Основная работа с базой ведется через самописный веб-фронт, который общается с базой посредством НТТР-сервисов 1С, только ограниченное количество сотрудников работают через толстый клиент. В последнее время при увеличении количестваработающих пользователей заметил тормоза при инициализации СОМ-объектов на сервере. Такое ощущение, что где-то прописано ограничение на количество одновременно запущенных СОМ-объектов, при превышении которого СОМ-объект становится в очередь и не инициализируется до тех пор, пока для него не освободится слот. Пауза происходит в строке типа "МойСОМ = Новый СомОбъект("....."), и эта пауза не ограничена никаким таймаутами. Может пройти пол часа, после которых СОМ получит свой слот и далее выполнение кода продолжится. При этом тот же код на толстом клиенте отрабатывает без задержек, так как в этом случае СОМ запускается на клиентском компьютере, а не на сервере. Ресурсы процессора и памяти достаточные, существенной загрузки процессора и памяти нет.
Пока временное решение - некоторые СОМ-объекты заменил самописными консольными приложениями. Но это костыль, надо решить проблему с СОМ, так как есть алгоритмы, которые без СОМ никаки не решить.
Есть у кого идеи?
По теме из базы знаний
Найденные решения
20. Ivon 676 05.01.25 13:50 Сейчас в теме
(19)
Ну так с сертификатами и SSL разобраться надо.

Проблема не в сертификатах, в локальной сети АПИ по локальным адресам идут без https, ибо в этом нет смысле.

ЗапуститьПриложение и передачу параметров через файлы никто не отменял. Unix way, между прочим, CGI и всётакое.

Часть функционала уже переделал на подобное решение, но, к сожалению, все так сделать нельзя.

Нет никаких "слотов" COM объектов. Каждый ведет себя по своему, причем еще в зависимости от модели - STA оно или MTA. Плюс какая нибудь прослойка DCOM с правами, плюс костыли для того-же MS Office, работу которых на безголовых сеансах никто не обещал, все эти хаки с созданиями каталогов, они от лукавого...

Уже нашел статью, "слоты" есть. Если кому надо будет - это называется "desktop heap" problem, информация есть, но найти ее та еще задача была, так как подобная проблема встречается крайне редко. Найти решение можно в интернете либо по названию проблемы, либо по строке "SharedSection=1024,20480,768". Приводить ссылку на другой ресурс с описанием решения не буду, чтобы не злить админов.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. user1863362 04.01.25 01:59 Сейчас в теме
(1)
Пауза происходит в строке типа "МойСОМ = Новый СомОбъект("....."),
А что по этому поводу говорят авторы библиотек, реализующих эти COM объекты?
5. Ivon 676 04.01.25 12:20 Сейчас в теме
(3) Вы думаете, что это ограничение именно 1С8.3?
6. user1863362 04.01.25 12:55 Сейчас в теме
(5) Я думаю, что тебе надо всё-таки рассказать, что это за класс и какая бибилитека его реализует. Не, если это Страшная Военная Тайна, то не надо, пожалуйста!
8. Ivon 676 04.01.25 19:00 Сейчас в теме
(6) Если имеется в виду СОМ-объект, то вообще любой, от ворда-екселя до встроенных в систему ADO и WinHttpRequest. Пауза возникает не в процессе работы СОМ-объекта, а на стадии его инициализации.
10. spacecraft 04.01.25 19:26 Сейчас в теме
(8) у каждого могут быть свои ограничения. Для ADO.NET по умолчанию максимальный размер пула = 100.
13. Ivon 676 04.01.25 20:18 Сейчас в теме
(10) Есть какая-то возможность увеличить этот пул?
16. spacecraft 04.01.25 20:41 Сейчас в теме
(13) смотреть документацию.
15. user1863362 04.01.25 20:40 Сейчас в теме
(10)
ADO.NET
и ADODB, который он создает через COM... как бы это сказать... немного разные вещи.
18. spacecraft 04.01.25 21:30 Сейчас в теме
(15) который так же имеет Max Pool Size 100
7. Fox-trot 163 04.01.25 16:48 Сейчас в теме
(4)
(1)
При этом тот же код на толстом клиенте отрабатывает без задержек, так как в этом случае СОМ запускается на клиентском компьютере, а не на сервере.

так что мешает переписать для клиента? или все ж таки на сервере выполняется?

и как вариант создавать ком-объекты только при их вызовах, это кстати оч.просто
9. Ivon 676 04.01.25 19:02 Сейчас в теме
(7) мешает переписать тот факт, что необходимо эти функции выполнять при внешнем входящем вызове АПИ, реализованном в виде веб-публикации 1С8.3. Такие вызовы всегда выполняются в контексте сервера.
11. Fox-trot 163 04.01.25 19:47 Сейчас в теме
(9) тогда вариант с отложенным созданием ком-объектов
например так
создаем глобальную переменную чтонить типа Перем МойКом Экспорт;
ну и уже в самой процедуре или функции
Если МойКом = Неопределено Тогда МойКом = Новый .... дальше по тексту
для тестов достаточно переписать один кусок имхо
12. Ivon 676 04.01.25 20:18 Сейчас в теме
(11) Смысла в этом нет, потому что это делается в разных сеансах, так что СОМ, который создан в одном сеансе, не будет виден для другого сеанса.
2. Fox-trot 163 04.01.25 01:45 Сейчас в теме
речь про директиву &НаКлиенте ?
4. Ivon 676 04.01.25 12:19 Сейчас в теме
(2) Нет, весь код запускается в контексте сервера, потому что идет вызов функции АПИ с веб-публикации, а не с тонкого клиента.
14. user1863362 04.01.25 20:39 Сейчас в теме
(8)
от ворда-екселя до встроенных в систему ADO и WinHttpRequest.
Засучивай рукава и переписывай на табличные документы, внешние источники данных и хттп запросы.

Не, если не хочешь расставаться с милыми странными разными глюками, то продолжай, конечно.
17. Ivon 676 04.01.25 21:26 Сейчас в теме
(14) Это не всегда возможно. Например, в табличном документе нельзя сделать в одном абзаце текст различными цветами и стилями. НТТР-запросы часто вываливают ошибку "failure when receiving data from the peer" при обращению к другим локальным АПИ. Везде, где возможно, используются внутренние механизмы 1С. Но, к сожалению, не все они работают хорошо и не все обеспечивают нужный мне функционал. Например, есть криптобиблиотеки, функционал которых никак средствами 1С не заменить.
19. user1863362 04.01.25 21:48 Сейчас в теме
(17)
в табличном документе нельзя сделать в одном абзаце текст различными цветами и стилями
8.3.24 уже как год с хвостиком выпустили.
НТТР-запросы часто вываливают ошибку "failure when receiving data from the peer"
Ну так с сертификатами и SSL разобраться надо.
функционал которых никак средствами 1С не заменить.
ЗапуститьПриложение и передачу параметров через файлы никто не отменял. Unix way, между прочим, CGI и всётакое.

Нет никаких "слотов" COM объектов. Каждый ведет себя по своему, причем еще в зависимости от модели - STA оно или MTA. Плюс какая нибудь прослойка DCOM с правами, плюс костыли для того-же MS Office, работу которых на безголовых сеансах никто не обещал, все эти хаки с созданиями каталогов, они от лукавого...

А ты выбрал, пожалуй, самый глючный способ RPC.
20. Ivon 676 05.01.25 13:50 Сейчас в теме
(19)
Ну так с сертификатами и SSL разобраться надо.

Проблема не в сертификатах, в локальной сети АПИ по локальным адресам идут без https, ибо в этом нет смысле.

ЗапуститьПриложение и передачу параметров через файлы никто не отменял. Unix way, между прочим, CGI и всётакое.

Часть функционала уже переделал на подобное решение, но, к сожалению, все так сделать нельзя.

Нет никаких "слотов" COM объектов. Каждый ведет себя по своему, причем еще в зависимости от модели - STA оно или MTA. Плюс какая нибудь прослойка DCOM с правами, плюс костыли для того-же MS Office, работу которых на безголовых сеансах никто не обещал, все эти хаки с созданиями каталогов, они от лукавого...

Уже нашел статью, "слоты" есть. Если кому надо будет - это называется "desktop heap" problem, информация есть, но найти ее та еще задача была, так как подобная проблема встречается крайне редко. Найти решение можно в интернете либо по названию проблемы, либо по строке "SharedSection=1024,20480,768". Приводить ссылку на другой ресурс с описанием решения не буду, чтобы не злить админов.
21. user1863362 05.01.25 15:19 Сейчас в теме
(20)
Уже нашел статью, "слоты" есть.
Поздравляю с добавлением в твою "систему" ещё одного костыля, влияющего на работу MSOffice на сервере! Ура!

А расскажи, пожалуйста, о связи этой настройки и, например, ADODB.Connection.
Или это магия?
22. Ivon 676 06.01.25 18:04 Сейчас в теме
(21) Эта настройка меняет ограничение на количество одновременно работающих дочерних процессов, запущенных службой агента сервера 1С, коими есть СОМ-объекты. ADODB.Connection тут не при чем, так как он всего-лишь один из дочерних процессов. То есть изменение настройки позволит службе агента сервера 1С запускать больше дочерних процессов одновременно.
23. user1863362 07.01.25 11:54 Сейчас в теме
(22)
Эта настройка меняет ограничение на количество одновременно работающих дочерних процессов,
А Microsoft в курсе? А там в документации что-то про дескрипторы окон, меню, значки, курсоры пишут... Врут?
Оставьте свое сообщение

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