Имя: Пароль:
1C
 
apache 2.4 ускорить
0 Noxvil
 
30.04.24
15:03
Коллеги, добрый день.

Есть выделенный сервер:
Xeon E3-1270v6 (4 ядра, 3.8-4.2 ГГц), 32 GB RAM, 2 х 480 Гб SSD

Установлено:
Windows Server 2022 Standard
1С 8.3.24.1467
Apache 2.4

- Питание настроил на высокую производительность
- Apache настроил на использование сертификата ssl

Время загрузки пустой страницы 65 мс
Время загрузки пустой функции http сервиса пустой базы 1с 300 мс (время исполнения в модуле http сервиса 1 мс)

Разница 234 мс

Как можно ускорить загрузку?
1 Philix
 
02.05.24
11:38
(0) Из 0,3 секунды 90 процентов времени потрачено на установку апач соединения с базой. Можно играться с параметрами времени жизни сеанса (вот тут расписано https://wonderland.v8.1c.ru/blog/povyshenie-proizvoditelnosti-veb-servisov/ ), либо рядом поднять какой-нибудь микро-http-сервис и опрашивать его по расписанию с интервалами меньше времени жизни сеанса для поддержания этого  сеанса апач - 1С в активном состоянии.
2 Noxvil
 
01.05.24
12:36
(1) Дополню, что был сделан тест через postman (50 запросов на пустой конфигурации).

Отладка (среднее время за 50 запросов):
вкл  = 547 мс
выкл = 329 мс

Первое соединение в обоих случаях > 1 сек
3 Noxvil
 
01.05.24
12:52
Установил количество сеансов 15, время ожидания 1200
Результат 311мс

Всё равно большая разница.
в первом посте написал 300 мс - округлил
4 alexela
 
01.05.24
15:03
(1) либо ждите когда появятся веб сокеты в 1с
5 Garykom
 
01.05.24
15:31
(0) Не понимаю что не нравится
Они и так в платформе 1С умудрились по максимуму сократить время запуска
Сравните со временем запуска например в режиме предприятия
Или точнее ближе будет внешнее COM-соединение
6 Noxvil
 
01.05.24
15:31
(4) День? Больше?
7 Garykom
 
01.05.24
15:32
(5)+ Если не нравится - написать свою ВК аля http-сервер
И использовать ее внутри длительного фонового задания на сервере
8 Noxvil
 
01.05.24
15:32
(5) хочется уменьшить скорость подключения к базе до 100-150 мм
9 Noxvil
 
01.05.24
15:33
Как понять, на что именно уходит время?
Какое-то легирование включить?
10 Garykom
 
01.05.24
15:34
(8) Как ты ее уменьшишь?
Там внешний веб-сервер (apache или iis) вызывает dll, которая подключается к 1С
Особенность работы веб-сервера не позволяет держать постоянно активное подключение к 1С из него
11 Garykom
 
01.05.24
15:36
Для одного клиента нет смысла ускорять
Есть смысл для множества клиентов одновременно - но это решается множеством веб-серверов на один или множество серверов 1С
12 Garykom
 
01.05.24
15:38
(7)+ В цикле опрашивая ВК "нет ли внешних обращений" и если есть, то уже имея запущенный процесс мгновенно выполнять код 1С формируя ответ
13 arsik
 
02.05.24
08:41
(10) Как раз позволяет. В (1) приведено, как это настраивается, только ссылка там кривая
https://wonderland.v8.1c.ru/blog/povyshenie-proizvoditelnosti-veb-servisov/
14 Garykom
 
02.05.24
09:53
(13) И в чем я не прав?
Для нулевого первого обращения либо после длительного простоя один хрен будет долгий запуск с нуля
Ибо пула соединений еще нет
15 Garykom
 
02.05.24
09:54
(14)+ Да конечно можно
"рядом поднять какой-нибудь микро-http-сервис и опрашивать его по расписанию с интервалами меньше времени жизни сеанса"
Но это тот еще изврат
16 DrZombi
 
02.05.24
10:56
(0) Для чего вам скорость?
Почему пользователь не желает ожидать секунду?

Выполните все шаманство в фоновом задании, пользователь будет бдить фоновое окошечко "Подождите идет обработка результата"... Можно еще и таймер приписать (для завуалировать заморозки времени, обмануть мозг ожидавшего) :)
17 Philix
 
02.05.24
11:50
(13) Спасибо, поправил ссылку в своем сообщении.
(16) У меня от смежной системы поступили похожие требования по времени отклика моей системы. Есть ощущение, что там заложен хороший "сержантский запас" времени, чтобы цепочка систем успела прогнать данные в одну сторону и ответ обратно в какое-то сильно ограниченное время.
18 Garykom
 
02.05.24
12:03
Если надо реально быстро отвечать - не вижу иного способа кроме "кэширования" данных из 1С во внешнюю систему
В кавычках потому что может потребоваться фактически наладить РИБ с чем то внешним
1С выгружает постоянно требуемые данные во внешнюю систему, а уже эта внешняя отвечает на запросы http
19 Garykom
 
02.05.24
12:04
Ну или ВК в длительном фоновом 1С - но это тот еще изврат и сократить время выполнения кода 1С не выйдет
20 sikuda
 
02.05.24
12:05
(1) "Из 0,3 секунды 90 процентов времени потрачено на установку апач соединения с базой."
- Подключение к базе 1С, установка параметров сеанса, долго тяжело и больно...

Если у тебя эти данные не меняются каждую секунду - Подумай как тебе реализовать кеширование этих данных без 1С.
21 timurhv
 
02.05.24
12:42
(16) Потому что бывает такие требования прописывают в контрактах на крупных проектах.

(0) Потестируйте платформу 8.3.25.
Сейчас протестировал клиент-сервер (правда Apache, сервер 1С, PostgreSQL - все на локальной машине).

Первый вызов из расширения Chrome "Boomerang", 0 пользователей в БД, даже если в базу зайти и выйти, то все-равно (видимо, кэш отдельный под http-соединения): 830мс
Повторный вызов http через 3 мин: 11-17 мс

У http в метаданных конфигурации повторное использование не ставил.
22 Chai Nic
 
02.05.24
13:00
А если без ssl, на голом http?
23 Noxvil
 
03.05.24
09:03
(21) Спасибо, попробую
24 DrZombi
 
03.05.24
09:07
(21) И, как вы сможете выкрутиться при такой закорючке (Подставе), если при определённой нагрузке, любая система провиснет :)
Независимо от того, куда вы едете — это в гору и против ветра!