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

04.03.22

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Скрипт по созданию экземпляров веб-сервера Apache для поддержки файловой базы 1с 8.2
.cmd 4,40Kb ver:0.2
185
185 Скачать (1 SM) Купить за 1 850 руб.

Вступление

Для небольших организаций традиционна работа с базой данных в файловом режиме. Это недорогой (не требуется приобретение сервера 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С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    22305    149    82    

146

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

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

15000 руб.

10.11.2023    13309    55    33    

74

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 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, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 18.09.2024, версия 1.2

19200 руб.

06.12.2023    12236    54    8    

84

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

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

14400 руб.

29.04.2020    34946    112    152    

77

Архивирование (backup) Инструменты администратора БД Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS!

6000 руб.

06.11.2012    74565    630    45    

89

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

Многие сталкиваются с проблемой когда изображения, находящиеся в базе разные по объему и размерам. Менеджеры могут добавить файлы в очень высоком разрешении, объемом свыше 20 Мегабайт. База данных становится слишком большой, выгрузка на сайт идёт медленно и требуется много место на хостинге. Как сжать картинки и уменьшить размер базы 1С? Это можно сделать с помощью данной обработки. Существует возможность выбрать различные варианты для того чтобы уменьшить картинки: в разы, в процентах от первоначального объема, а также сделать картинки одинаковой ширины. В результате размер базы 1С значительно сократится (в зависимости от количества и размера картинок), а изображения станут небольшого объема, равными по ширине, почти без потери качества. Работает на управляемых формах для УТ 11, КА, ERP.

3000 руб.

21.07.2022    10530    10    4    

18

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

В процессе работы  возникла необходимость управления последовательностями в разрезе измерений. Штатные возможности не позволяют этого сделать. Но бывает очень необходимо восстановить последовательность только по одному измерению (например, подразделению, организации и т.д.). (Возможность покупки за рубли и StartMoney).

2400 руб.

24.08.2018    17630    11    0    

6
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
99. user911131 18.02.20 20:26 Сейчас в теме
(98)
Судя по "File does not exist: C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/micro" в логе апача, вы его запускаете не с тем конфигом, который создал скрипт.


А скрипт не создает в этой папке конфига, хз почему.

Опытным путем было установлено, что служба Apache запускается только, если имя базы такое же, как и имя папки, где хранится база.
100. Chai Nic 162 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. antvv 49 24.08.20 15:05 Сейчас в теме
Очень нужная разработка, низкий поклон автору за труд! Подскажите, актуально ли решение для актуальных версию платформы? Будет ли работать с Apache 2.4?
105. aaa_aa 15.03.21 01:05 Сейчас в теме
Не удается сделать что бы работал : Ошибку прикрепляю и лог аппача.
Прикрепленные файлы:
error.log
106. Chai Nic 162 24.03.21 06:27 Сейчас в теме
(105) Совершенно незачем было выкладывать весь скрипт. Надо было выложить то, на что ругается - vrd-файл.
У вас скорее всего в пути к базе или в имени публикации применяются не латинские символы.
108. aaa_aa 24.03.21 14:21 Сейчас в теме
(106)

Покрепил vrd файл
Прикрепленные файлы:
Default.vrd
109. Chai Nic 162 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_ 107 25.05.21 15:11 Сейчас в теме
Вы Могли бы выполнить данное подключение?
113. Alexponenta 03.10.21 10:55 Сейчас в теме
Если данная разработка решает проблему работы нескольких клиентов при обращении на один сервер. То это вообще зачет. Единственное хотелось бы узнать: данное решение работает только с 2.2 или можно использовать 2.4?

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