Решение проблемы однопоточности модуля веб-сервера при работе с файловой базой

04.03.22

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

Решение проблемы однопоточности модуля веб-сервера при работе с файловой базой путем запуска нескольких экземпляров веб-сервера Apache на одном физическом сервере. Предлагаемый скрипт автоматизирует процесс настройки.

Скачать исходный код

Наименование Файл Версия Размер
Скрипт по созданию экземпляров веб-сервера Apache для поддержки файловой базы 1с 8.2
.cmd 4,40Kb
179
.cmd 0.2 4,40Kb 179 Скачать

Вступление

Для небольших организаций традиционна работа с базой данных в файловом режиме. Это недорогой (не требуется приобретение сервера 1с) способ организации совместной работы нескольких пользователей. Однако он имеет серьезные недостатки. Главный из них - сетевая работа с базой данных в режиме разделенного доступа. В результате скорость работы с файлом ограничивается скоростью сети, кроме того, при совместном доступе к сетевому ресурсу windows не в лучшую сторону меняет настройки кэширования данных этого файла, что резко снижает скорость записи. При аварийном прекращении работы сети во время записи данных может произойти порча базы, часто необратимая.

К счастью, при реализации модели управляемых форм в версии 8.2 фирма 1с предоставила возможность работы с файловой базой через веб-сервер. У этого способа есть огромные преимущества:

1. Намного выше скорость работы с данными, поскольку не требуется их передача по сети во время обработки

2. База не боится разрывов сети во время записи, поскольку непосредственная работа с файлом данных происходит через модуль веб-сервера. Разрыв передачи данных по сети может вызвать лишь временное прекращение работы пользователей, но не порчу данных в базе и не тем более не может вызвать разрушение самой базы.

3. Нетребовательность к скорости сети и к быстродействию клиентских компьютеров. Это обеспечивает легкое масштабирование - путем апгрейда лишь одного сервера можно существенно повысить производительность работы.

4. Возможность работы как в тонком клиенте, так и в веб-браузере.

Но при работе в таком режиме можно столкнуться со следующей проблемой. Дело в том, что модуль 1с для веб-сервера — однопоточный. Соответственно, все пользователи 1с, подключенные к этому веб-серверу, встают в единую «очередь» серверных вызовов. Если серверные вызовы длительные, что возможно при росте объема данных в базе или при выполнении сложных запросов, то это может полностью парализовать работу других пользователей — они будут вынуждены ждать.

Вот что написано по этому вопросу на сайте 1с: "Прямо в адресное пространство веб-сервера загружается компонент для работы с файловой базой данных и сами данные информационной базы. При этом нагрузка на веб-сервер значительно возрастает, а пользователи одной информационной базы не имеют возможности работать параллельно. Все их запросы к базе данных выстраиваются в одну очередь. " (с)

Но решить эту проблему можно достаточно просто.  Нужно использовать вместо одного веб-сервера несколько, вплоть до того, что каждому клиенту выделить свой собственный серверный процесс. Однако, 1с не предоставляет возможности автоматической публикации конфигурации через веб-модуль на нескольких экземплярах сервера. Тем не менее, для сервера Apachе это можно осуществить путем ручного редактирования файлов конфигурации. Для автоматизации этого процесса и предназначена данная разработка.

Разработка представляет собой cmd-файл (скрипт), облегчающий работу по созданию нового экземпляра веб-сервера Apache с публикацией файловой базы.

 

Описание скрипта:

При запуске скрипт принимает в качестве параметров три значения:

  • имя базы, под которым она будет опубликована на экземпляре веб-сервера
  • порт, на котором будет работать экземпляр
  • каталог, где находится файловая база данных

В качестве имени базы следует указывать строку из латинских символов и цифр (ограничения аналогичны интернет-адресам) без кавычек. Русские буквы и пробелы не допускаются. Порт может быть любым — важно, чтобы он был не занят другим приложением и не был заблокирован брандмауэром. Каталог базы, если содержит пробелы, должен быть в кавычках.

Предварительно скрипт нужно настроить под свою систему, указав в нём, в разделе системно-специфичных переменных, следующие данные:

MODULE_1C — полный путь к модулю веб-сервера 1с

вариант: set MODULE_1C=C:\Program Files\1cv82\8.2.18.82\bin\wsap22.dll

APACHE_PATH — путь к каталогу Apache

вариант: set APACHE_PATH=C:\Program Files\Apache Software Foundation\Apache2.2

 

Запуск скрипта с отсутствующим путём к базе данных вызывает удаление регистрации экземпляра веб-сервера, связанного с указанной базой и портом.

 

Пример использования

Задача: Нужно создать инфраструктуру для работы 5 пользователей в одной файловой базе через веб-сервер без взаимного ожидания выполнения серверных процессов.

Решение: Создать 5 экземпляров веб-сервера Apache и каждому клиенту сопоставить свой порт.

1. Настраиваем скрипт, указав в переменных MODULE_1C и APACHE_PATH актуальные для системы параметры.

2. Запускаем скрипт последовательно 5 раз, меняя порт

c:\test>web_server_1c.cmd buh_base 8001 d:\bases\buh_base 

c:\test>web_server_1c.cmd buh_base 8002 d:\bases\buh_base

c:\test>web_server_1c.cmd buh_base 8003 d:\bases\buh_base

c:\test>web_server_1c.cmd buh_base 8004 d:\bases\buh_base

c:\test>web_server_1c.cmd buh_base 8005 d:\bases\buh_base

3. На клиентах создаем ярлыки подобного содержания:

1cv8c.exe ENTERPRISE /Wshttp://192.168.0.1:8001/buh_base

...

1cv8c.exe ENTERPRISE /Wshttp://192.168.0.1:8005/buh_base

 

Примечание

Для удобства обновления платформы и уменьшения затрат времени лучше сделать следующее:

  • На сервере создать символическую ссылку на каталог, где установлена актуальная версия платформы 1с. Это наиболее удобно сделать с помощью Far Manager.
  • В параметрах обработки прописать путь к модулю 1с для веб-сервера, именно используя этот каталог-ссылку, чтобы в конфигурационных файлах не было привязки к конкретному имени каталога 1с (с номером версии).
  • Данный каталог-ссылку открыть для общего доступа по сети на чтение.
  • На клиентах в локальной сети 1с не ставить, а настроить всем ярлык, ссылающийся непосредственно на тонкого клиента 1cv8c.exe на сервере. Он грузится достаточно быстро для этого.

Таким образом, действия, которые необходимо предпринять при обновлении платформы 1с, ограничатся корректировкой символической ссылки на новый каталог 1с и перезапуском процессов Apache.  

См. также

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

14400 руб.

06.12.2023    3722    19    1    

40

Infostart УДиФ: Управление данными и формами 1С

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 руб.

10.11.2023    4657    12    2    

38

SALE! %

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2280 руб.

14.01.2013    178850    1085    0    

862

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    28105    83    146    

61

"Менеджер потоков 2.1": УПП: "Восстановление партий"

Инструменты администратора БД Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бухгалтерский учет Управленческий учет Платные (руб)

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    11884    5    9    

7

Система хранения присоединенных файлов в томах на диске

Инструменты администратора БД Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием Платные (руб)

Конфигурация Комплексная автоматизация 1.1 (и УПП 1.3 тоже) хранит файлы и изображения в справочнике Хранилище дополнительной информации в реквизите Хранилище типа ХранилищеЗначений. Та же история с ВложениямиЭлектроннойПочты. Но при этом присоединенные файлы в Электронном документообороте хранит в томах на диске. Эта доработка позволяет использовать стандартный механизм хранения файлов, изображений и вложений электронных писем в томах на диске. При этом можно разделить тома хранения по объектам конфигурации.

4200 руб.

10.11.2015    61604    90    59    

74

Конфигурация Session Monitor

Мониторинг Инструменты администратора БД Платформа 1С v8.3 Россия Платные (руб)

Конфигурация Session Monitor предназначена для мониторинга сервера 1С с целью отслеживания чрезмерной нагрузки от конкретных сеансов и скорости реакции рабочих процессов.

1500 руб.

01.12.2020    14446    35    0    

49

Хранилище файлов на SQL

Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Управленческий учет Платные (руб)

Привязка файлов / сканов к объектам 1С с сохранением их на SQL-сервере

12000 руб.

09.10.2019    11221    5    8    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
100. Chai Nic 160 19.02.20 09:15 Сейчас в теме
(99) Если вы скрипт не правили, то он там и не должен создавать ничего.

Он создает всё нужное в папке 1C_WEB - и cfg и vrd, в подкаталоге с именем публикации базы, при этом имя папки базы вообще ни на что не влияет в конфигурации, кроме содержимого vrd-файла.
101. user911131 19.02.20 19:05 Сейчас в теме
(100)
при этом имя папки базы вообще ни на что не влияет в конфигурации, кроме содержимого vrd-файла.

Хм, похоже на то. Сейчас нормально запустился с разными именами папки и базы. Странно как-то, может я где чего косячил.
102. G-Tiger 05.04.20 22:33 Сейчас в теме
(100)
Есть возможность приобрести скрипт не за местную валюту?
97. пользователь 18.02.20 12:33
Сообщение было скрыто модератором.
...
103. pencil81 15.06.20 12:52 Сейчас в теме
А я правильно понимаю, что если опубликовать базу не в разных экземплярах сервера, а в разных каталогах, мы получим тот же результат?
104. antonius888 48 24.08.20 15:05 Сейчас в теме
Очень нужная разработка, низкий поклон автору за труд! Подскажите, актуально ли решение для актуальных версию платформы? Будет ли работать с Apache 2.4?
105. aaa_aa 15.03.21 01:05 Сейчас в теме
Не удается сделать что бы работал : Ошибку прикрепляю и лог аппача.
Прикрепленные файлы:
error.log
106. Chai Nic 160 24.03.21 06:27 Сейчас в теме
(105) Совершенно незачем было выкладывать весь скрипт. Надо было выложить то, на что ругается - vrd-файл.
У вас скорее всего в пути к базе или в имени публикации применяются не латинские символы.
108. aaa_aa 24.03.21 14:21 Сейчас в теме
(106)

Покрепил vrd файл
Прикрепленные файлы:
Default.vrd
109. Chai Nic 160 24.03.21 19:08 Сейчас в теме
(108) Ну что я и говорил. У вас буква "С" русская в "1СBase". В описании сказано, что пути должны быть чистой латиницей. Если русские, то там пришлось бы заморачиваться с перекодировками utf-cp1251-866.
110. aaa_aa 06.04.21 14:27 Сейчас в теме
(109) Поменял букву в базе, не помогло. В ручную менял путь в vrd файле ошибка такая же
111. l4h 06.04.21 23:14 Сейчас в теме
(110) сначала надо разместить базу 1с по пути, в котором не встречается русских букв, потом можно базу снять с публикации и опубликовать ее снова, руками в vrd править ничего не придется.
107. aaa_aa 24.03.21 14:20 Сейчас в теме
112. Rasty_ 106 25.05.21 15:11 Сейчас в теме
Вы Могли бы выполнить данное подключение?
113. Alexponenta 03.10.21 10:55 Сейчас в теме
Если данная разработка решает проблему работы нескольких клиентов при обращении на один сервер. То это вообще зачет. Единственное хотелось бы узнать: данное решение работает только с 2.2 или можно использовать 2.4?

А то прям беда - работает 5 человек и при этом виснет - будь здоров.
114. Chai Nic 160 12.11.21 16:11 Сейчас в теме
(113) С 2.4 тоже работает, только модуль будет wsap24.dll
115. Alexponenta 13.11.21 17:18 Сейчас в теме
(114) Вопрос: а если я создам несколько публикаций одной и той же базы- это будет также работать или нет?
116. Chai Nic 160 29.11.21 09:36 Сейчас в теме
(115) да конечно, первоначально так и было. Это попытка сделать некую автоматизацию.
117. Student1C 57 19.01.22 15:47 Сейчас в теме
(116) а я так понял, что стандартно не получиться несколь публикаций сделать, т.к. она перезапишется...
118. Chai Nic 160 19.01.22 15:57 Сейчас в теме
(117) Штатно из 1с - перезапишется. А регистрацией экземпляра веб-сервера на разных портах вполне можно.
Student1C; +1 Ответить
Оставьте свое сообщение