Повышение производительности веб-сервисов. Переиспользование сеансов

20.10.21

База данных - HighLoad оптимизация

Повышение производительности веб-сервисов. Переиспользование сеансов. Практическая реализация.

Создано на основе практической реализации из публикации 

Повышение производительности веб-сервисов

Задача: Повысить производительность вызовов http-сервисов

Платформа: 8.3.18.1289

При использовании http-сервисов от 1С значительную часть времени занимает установка параметров сеанса. 

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

Столкнувшись с необходимостью сократить время вызовов - решил применить переиспользование сеансов из вышеупомянутой статьи. В статье описана работа с Web-сервисами, а у меня Http-сервисы. И хотя по логике - там всё должно быть аналогично - тем не менее столкнулся с некоторыми трудностями. И поскольку аналогичного решения не нашел - делюсь своим опытом.

Запуск и использование сеанса - прошли без проблем.

Проблемы были с завершением сеанса. Но как выяснилось там тоже было всё просто.

Описания всех параметров и способов их установки приводить не буду. Приведу только свои настройки которые заработали.

 

1. Настройка повторного использования сеансов

1.1 Файл default.vrd

 

 

1.2 Настройка http-сервиса

 

 

2. Первый запуск - начало сессии

2.1 Вызов метода:

POST https://ПутьКПубликации/hs/client-api/v2/ИмяМетода HTTP/1.1

2.2 Заголовки:

User-Agent: Fiddler
Host: ПутьКПубликации
Authorization: Basic ...
Content-Type= application/json: 
Content-Length: 0
IBSession: start

 

2.3 Из заголовка ответа - берем ibsession

Set-Cookie: ibsession=92d60db6-777c-4e3f-89b0-ff3ae8a61aa8

 

3. Повторное использование сессии

3.1 Вызов метода:

POST https://ПутьКПубликации/hs/client-api/v2/ИмяМетода HTTP/1.1

3.2 Заголовки - добавляем куки - из п 2.2:

User-Agent: Fiddler
Host: ПутьКПубликации
Authorization: Basic ...
Content-Type= application/json: 
Content-Length: 0
Cookie: ibsession=92d60db6-777c-4e3f-89b0-ff3ae8a61aa8

 

3. Завершение сессии

3.1 Вызов метода:

POST https://ПутьКПубликации/hs/client-api/v2/ИмяМетода HTTP/1.1

3.2 Заголовки - добавляем куки и флаг завершения сессии:

User-Agent: Fiddler
Host: ПутьКПубликации
Authorization: Basic ...
Content-Type= application/json: 
Content-Length: 0
Cookie: ibsession=92d60db6-777c-4e3f-89b0-ff3ae8a61aa8
IBSession: finish

"IBSession" - регистр в наименовании важен, если написать всё в нижнем регистре - работать не будет, сессия не завершиться.

 

Итоги по времени исполнения

Первый запуск (старт сессии)

    Overall Elapsed:    0:00:01.239

Повторный запуск

    Overall Elapsed:    0:00:00.306

Завершение сессии

    Overall Elapsed:    0:00:00.336

 

Время выполнения метода по замерам 1С: 0.022 сек

Судя по замерам - скорость выросла значительно.

Вступайте в нашу телеграмм-группу Инфостарт

веб-сервис переиспользование сеансов завершение reuseSessions IBSession finish 8.3.18

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

42700 руб.

03.08.2020    24356    37    24    

28

WEB-интеграция Программист Бизнес-аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17568 руб.

20.12.2024    6328    28    4    

30

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Расширение для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

24000 руб.

02.02.2021    23067    69    52    

43

WEB-интеграция Загрузка и выгрузка в Excel Программист Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Расширение освободит вас от необходимости вручную обновлять информацию о товарах в группах ВКонтакте. Достаточно задать правила один раз, и система автоматически формирует файлы yml для дальнейшей загрузки в группы в ВК. Вы сможете легко выбирать, какие товары публиковать, создавая гибкие критерии отбора. Например, можно добавить важные для покупателей параметры: цвет, размер или другие характеристики.

12200 руб.

29.08.2025    2804    7    8    

8

Обмен с ГосИС WEB-интеграция Бухгалтер Пользователь 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

5283 руб.

28.04.2016    101214    120    219    

368
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1355 20.10.21 18:12 Сейчас в теме
По сути краткое изложение статьи 2016 года https://wonderland.v8.1c.ru/blog/povyshenie-proizvoditelnosti-veb-servisov/

Примеры можно организовать в виде postman коллекции, удобно на своем сервере прогонять автоматом.

Интересно "01.239 - 00.306" - это на пустой базе или доп. код типовой по инициализации? Интересно на сколько критично его выпилить тем самым уменьшив время инициализации.

"Эта стратегия позволяет вам реализовать сценарии, в которых используется состояние сеанса, сохранённое на сервере." + "завершение сеанса может происходить не только по вашей «команде», но и автоматически", под какой кейс это применимо непонятно, сам пишу либо REST либо RPC подобное.
2. sorter1 53 20.10.21 18:46 Сейчас в теме
(1)
Сильно переработанная УТ 10.3
Установка параметров сеанса - от 0.5 до 1 сек
При входе в клиент - как-то не особо заметно, зашел и зашел.
А когда вызывается десяток методов с сайта - заметно торможение. при каждом вызове - установка параметров сеанса.

Создано - как раз на основе статьи . но т.к. подробностей применительно к существующим требованиям не было пришлось экспериментировать.
3. unichkin 1624 14.03.23 11:24 Сейчас в теме
С http-сервисами все действительно просто. А как быть с web-сервисами? Попал на зависающий сеанс, как его прекратить по данным статьи в зазеркалье - непонятно. У объекта WSПрокси нет заголовков, где это все указывается.
4. simuljakr 207 08.11.23 16:40 Сейчас в теме
Подскажите пожалуйста насчет заголовков: - в моем случае они не используются.
Если брать из вашего примера - достаточно ли в заголовки вставить при запросе только IBSession ?
5. simuljakr 207 08.11.23 17:03 Сейчас в теме
И что класть в переменную IBSession на стороне базы, которая формирует ответ ?
Я так понимаю - это некий идентификатор Http-сессии ?
6. simuljakr 207 08.11.23 17:50 Сейчас в теме
(0) ,
(1)
Вот в этой статье
https://wonderland.v8.1c.ru/blog/povyshenie-proizvoditelnosti-veb-servisov/


пишут, что параметр должен установиться в заголовок платформой автоматически:
https://disk.yandex.ru/i/jzk4OFn08J9bPg

а у меня устанавливается вот так:
https://disk.yandex.ru/i/h_qIOiYfZDCzSw

Почему платформа не возвращает IBSession ?
Для отправки сообщения требуется регистрация/авторизация