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

04.03.22

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

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

Скачать файлы

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

Вступление

Для небольших организаций традиционна работа с базой данных в файловом режиме. Это недорогой (не требуется приобретение сервера 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.

12000 руб.

06.12.2023    2956    12    1    

34

SALE! 20%

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

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

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

10000 8000 руб.

10.11.2023    3488    11    1    

33

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177712    1073    0    

848

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

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

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

14400 руб.

29.04.2020    27365    79    146    

59

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

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

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

4200 руб.

10.11.2015    61307    88    59    

73

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

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

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

20000 руб.

12.09.2019    11738    5    9    

7

Брандмауэр для сервера 1С Предприятие 8 - внешнее управление сеансами

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

Управление возможностью начала и возобновления сеансов пользователей по различным условиям, ограничение общего числа возможных сеансов для работы с информационной базой, резервирование возможности работы с информационной базой определенных польззователей, запрет запуска нескольких сеансов для пользователя, журнализация событий начала (возобновления) и завершения (гибернации) сеансов, ведение списка активных сеансов для информационных баз кластера серверов

3600 руб.

06.02.2017    31104    31    18    

47

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

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

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

12000 руб.

09.10.2019    10973    5    8    

9
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. afanasko 35 09.12.13 16:10 Сейчас в теме
А как обстоит дело с блокировками при таком варианте работы? Транзакции работают?
2. Chai Nic 160 09.12.13 16:21 Сейчас в теме
(1) afanasko, транзакции и блокировки работают так же, как в файловой базе - проверил. По сути, каждый экземпляр веб-сервера - это клиент для базы.
3. afanasko 35 09.12.13 16:26 Сейчас в теме
(2) Chai Nic, тогда это очень круто :). Если еще смастерить "сервер", который автоматически экземпляры апача генерить будет для каждого коннекта - то зачем будет нужен микросервер от 1С?
5. Chai Nic 160 09.12.13 16:34 Сейчас в теме
(3) afanasko, да, у меня тоже есть мысль написать сервис-диспетчер, который бы слушал один порт, принимая на него запросы клиентов, и пробрасывал бы соединение на наименее загруженный веб-сервер. Но это надо будет дельфи или си вспоминать)
15. maxx 991 10.12.13 12:01 Сейчас в теме
(5)Скажите не сильно разбираюсь в Apache, a нельзя установить 5 раз Apache , типа 5 каталогов ProgramFiles\Apache1 ProgramFiles\Apache2 ProgramFiles\Apache3 ProgramFiles\Apache4 ProgramFiles\Apache5 со своими конф. файлом своим портом или будут проблемы?
17. Chai Nic 160 10.12.13 12:59 Сейчас в теме
(15) maxx, можно конечно и так сделать, но зачем? Апач нормально работает с указанием конфигурационного файла.

(16) AllexSoft, это можно увидеть в соединениях процессов 1cv8c или httpd через Process Explorer или netstat.
Vladimir Litvinenko; AllexSoft; +2 Ответить
18. AllexSoft 10.12.13 13:21 Сейчас в теме
(17) Chai Nic, если он переподключается постоянно, то будет ли разница в контексте какого сервера апача он подключиться в дальнейшем ? ведь база то одна все равно и апачи на одном сервере вияст, все темпы будут одни и тд... может и смысла нет в таблице трансляции ?
ПС: на личку ответите ?
19. Chai Nic 160 10.12.13 13:26 Сейчас в теме
(18) AllexSoft, неее, к какому угодно, я думаю, нельзя, ведь контекст приложения (параметры сеанса и тому подобное) держит именно модуль веб-сервера, а он на каждом серверном процессе свой.
20. AllexSoft 10.12.13 13:36 Сейчас в теме
(19) Chai Nic, нее.. я думаю что веб-сервер то как раз ничего не держит в случае апача... ибо при отвале коннекта он бы все чистил у себя - для него это просто отключившийся клиент. А вот 1С где то держит это, чувствую что держит она это в темпах у себя, как всегда все на файликах-темпах в 1С же... ))
ПС: апач ничего не держит с вероятностью в 99%, может компонента эта 1С-ная держит конечно.. нужна проверка все равно =)
21. Chai Nic 160 10.12.13 13:47 Сейчас в теме
(20) AllexSoft, разумеется, апач ничего не держит. Но он в данном случае всего лишь "запускалка" для модуля 1с. И вот именно этот модуль и создает временные файлы, кроме того, хранит что-то, относящееся к запущенным сеансам, в своей оперативной памяти. А разные экземпляры апача - разные модули 1с. Сеансы, открытые на одном из них, на другом модуле будут чужими, скорее всего просто коннект отвалится с ошибкой.
Cyberhawk; Vladimir Litvinenko; +2 Ответить
9. logdog 10.12.13 01:44 Сейчас в теме
(2) Извините, я правильно понимаю, что для базы в которой заведены 10 организаций,и работают 10 пользователей, использование веб-клиента приведет к видимым тормозам, т.е. будет еще хуже, чем при работе на терминальном сервере?
И соответственно, если у меня 10 баз 1с с 1 организацией, проблем при поднятии 1 apache сервера не возникнет для доступа 10 пользователей (по 1 к каждой базе)?

(8) В 8.3 можно настроить время жизни соединения maxAge и другие параметры:
<pool size="10000"
maxAge="600"
attempts="3"
attemptTimeout="100"
waitTimeout="100"/>
12. Chai Nic 160 10.12.13 08:06 Сейчас в теме
(9) logdog, однопоточность модуля веб-сервера проявляется лишь в контексте одной информационной базы. Если на одном экземпляре апача висит несколько информационных баз - их серверные вызовы выполняются независимо.
denwer7; logdog; +2 Ответить
4. AllexSoft 09.12.13 16:32 Сейчас в теме
Спасибо! как раз есть задумки на этот счет, я сам уже давно догадался использовать несколько процессов апача, но каждому свой ярлык делать не айс... и вот какие мысли есть по этому поводу:
Написать простенький сервис-тунель на Delphi , который будет принимать все входящие коннекты на порт скажем 8080, и распределять их динамически по N веб-сервисам апача... просто циклом отправляя клиентов работать 1ого клиента на первый процесс, второго на второй.. шестого снова на первый, седьмого на второй и тд.. понятно думаю смысл ) 1С:Сервера это конечно не заменит, но тогда можно будет забыть о работе через локалку в файловом варианте )
6. kiruha 388 09.12.13 20:01 Сейчас в теме
А как там дальше. Вот 5 пользователей ушли с работы, утром пришли, кто то выдернул шнур по глупости из розетки. Сервер перегрузили или нет. Как там все будет ?
8. Chai Nic 160 09.12.13 20:26 Сейчас в теме
(6) kiruha, насколько я в курсе, модуль веб-сервера периодически принимает от клиентов пакеты "keep alive", если какое-то время их не получает - считает что сеанс умер и отрубает его (есть подозрение на 20 минут). В этом смысле ничего не меняется, что с одним сервисом, что с несколькими на одной базе. Каждый будет работать по тому же принципу. В общем, по сути вообще ничего не меняется, можно эту функцию настроить на сервере, а работать по старинке - на одном апаче.. это если некому ярлыки пользователям раскидать по уму. Хуже не будет в любом случае.
7. kiruha 388 09.12.13 20:04 Сейчас в теме
Особенно учитывая что на 5 юзерах штатных админов и 1С ников может не быть
10. пользователь 10.12.13 01:54
Сообщение было скрыто модератором.
...
11. Vladimir Litvinenko 2869 10.12.13 07:21 Сейчас в теме
Хорошее решение, но требуется ручное распределение пользователей по веб-серверам. Если написать автораспределение подключений по сервисам, то получится аналог сервера 1С для файлового варианта. Сервисы Апача вместо rphost, распределяющая прога - вместо rmngr.

Chai Nic, можно написать про еще один серьезный плюс такого решения - защищенность файлов базы данных от копирования или повреждения ручками пользователей. Только ради этого стоит применять такой подход. Особенно когда "узкое горлышко" веб-сервера перестает иметь значение.
13. kiruha 388 10.12.13 10:21 Сейчас в теме
(11) VladimirL,
+1
Вообщем нужно хотя бы простое автоматическое подключение к разным.
Вероятно можно реализовать через файлики настроек, типа поиска ключа.

Типа установил и забыл
14. Chai Nic 160 10.12.13 10:45 Сейчас в теме
(13) kiruha, автоматическое решение нужно, но оно не получится таким уж простым. Дело в том, что клиент не устанавливает постоянное tcp-соединение с сервером, сеанс поддерживается лишь на прикладном уровне. Алгоритм менеджера должен быть примерно такой - клиент подключается к менеджеру (по tcp), тот смотрит в таблицу трансляции, если для клиента в ней записи нет - выбирается свободный (или менее загруженный) рабочий сервис, данные транслируются, и в таблицу трансляции записываются сведения "клиент такой-то подключен к серверу такому-то тогда-то". При последующих запросах уже используются данные из таблицы. Периодически таблица трансляции проверяется на записи, время жизни которых превысило некий порог - они удаляются. Как-то так..
Vladimir Litvinenko; +1 Ответить
16. AllexSoft 10.12.13 12:37 Сейчас в теме
(14) Chai Nic, а откуда инфа о том что соединение не висит постоянно ?
22. logdog 10.12.13 13:54 Сейчас в теме
Для запуска веб-клиента, нужен только апатч или он должен быть в связке с nginx?
23. AllexSoft 10.12.13 14:14 Сейчас в теме
24. logdog 10.12.13 15:20 Сейчас в теме
(23)Есть еще такой продукт Apache Traffic Server 4.0 - это замена апатчу (можно ли на нем поднимать веб-сервер для 1С)?
25. AllexSoft 10.12.13 15:23 Сейчас в теме
(24) logdog, думаю что не получится, я пробовал ставить Denver, не получилось ) а с обычным стандартным апачем взлетело сразу без мучений
26. logdog 10.12.13 15:46 Сейчас в теме
(25)Ну, Denver - это "комбайн", а нам ни базы данных, ни php не нужно.
27. Chai Nic 160 10.12.13 15:51 Сейчас в теме
(26) logdog, да даже из всего огромного количества модулей апача нужен лишь один mod_alias в дополнение к модулю 1с...
Vladimir Litvinenko; logdog; +2 Ответить
28. logdog 10.12.13 17:54 Сейчас в теме
(27) Я бы еще mod_ssl.so добавил. (но и mod_auth_* нужны)
29. Chai Nic 160 10.12.13 18:00 Сейчас в теме
(28) logdog, ну это всё-таки не обязательно, в 99% случаев с https не связываются, поскольку с базой работа ведется внутри локальной сети или vpn..
30. AllexSoft 10.12.13 18:13 Сейчас в теме
у меня кстати так и не удалось завести Аапач+SSL + 1C ( не хочет видеть 1С его и все
31. logdog 10.12.13 19:30 Сейчас в теме
(30)Тут статья была, Вы поищите, я когда-то ради теста настроил - работало.
32. AllexSoft 10.12.13 21:09 Сейчас в теме
(31) logdog, сначала сам, потом по ней пытался... не захотел долго возиться, но с первого раза не взлетело
33. logdog 10.12.13 21:47 Сейчас в теме
Интересует вопрос по тонкой настройке apache:
Cейчас висят два процесса httpd (почему два?) и один из них отжирает около 250 метров памяти, хотя 3 часа как отключились от веб-клиента (
34. Chai Nic 160 10.12.13 22:19 Сейчас в теме
(33) logdog, а ничего тут не сделаешь, память занимает не апач, а серверный модуль 1с. И занимает её он не просто так, а кэширует в памяти часть метаданных. Так, чтобы при повторном подключении клиенту не приходилось ждать загрузки. Что касается двух процессов на одну службу - так и должно быть, один как я понимаю служебный, а второй - собственно рабочий.
35. logdog 10.12.13 22:26 Сейчас в теме
(34) Тогда вопрос с точки зрения лицензий, этот висящий процесс занимает клиентскую лицензию 1C? И закрытие браузера клиентом, отнюдь не означает освобождение лицензии (она освобождается, только тогда, когда время жизни соединения истечет)?
36. Chai Nic 160 10.12.13 23:21 Сейчас в теме
(35) logdog, клиентскую лицензию в случае веб-браузера занимает пользовательский сеанс 1с, а не серверный процесс. Внутри одного серверного процесса может работать и несколько сеансов 1с, при этом каждому нужна лицензия. По поводу времени освобождения лицензии после завершения сеанса (нормального или аварийного) - тут ничего пока сказать не могу, надо проверять.
37. logdog 11.12.13 13:02 Сейчас в теме
(34)Проверил, к сожалению - это верно до истечения времени жизни сессии. До 320, после 250 - память просто не освобождается.
38. Chai Nic 160 11.12.13 13:52 Сейчас в теме
(37) logdog, я не думаю, что это так уж важно. А вообще, можно перезапускать сервисы по ночам планировщиком, заодно и бэкап сделать во время остановки.
39. asved.ru 36 17.12.13 04:58 Сейчас в теме
А на IIS то же самое делается вполне стандартными средствами.
40. Chai Nic 160 17.12.13 07:56 Сейчас в теме
(39) asved.ru, так и на апаче вполне стандартными.. или что вы понимаете под "стандартными средствами"?
42. asved.ru 36 17.12.13 10:12 Сейчас в теме
(40) Chai Nic, (41) AllexSoft, количество рабочих процессов куазывается в настройках пула приложения.

так и на апаче вполне стандартными

да, для опенсорс разного рода костылинг является вполне стандартными средствами, тут я с вами согласен.

Решение: Создать 5 экземпляров веб-сервера Apache и каждому клиенту сопоставить свой порт.
43. Chai Nic 160 17.12.13 10:42 Сейчас в теме
(42) asved.ru, ваши личные предпочтения (gui vs комстрока) к теме обсуждения не относятся, просьба не устраивать оффтопик. Суть не в количестве рабочих процессов, а в создании изолированных экземпляров веб-сервера, слушающих разные порты и независимо загружающих одинесовскую дллку. Позволяет IIS такое?
45. asved.ru 36 17.12.13 11:32 Сейчас в теме
(43) Chai Nic,

Суть не в количестве рабочих процессов, а в создании изолированных экземпляров веб-сервера, слушающих разные порты и независимо загружающих одинесовскую дллку. Позволяет IIS такое?


А зачем? Если можно сделать все на одном порту, одном экземпляре, и мы получим ту же самую параллельность работы?
Таки позволяет, кстати, легко и непринужденно. Матчасть нужно знать и любить.

А в описанном случае, чтобы получить все на одном порту, придется еще и фронт-сайд ставить в виде, к примеру, nginx.

Поймите уже, ценность решения - не в его хитрости, а в его простоте. А с гуй/консоль вы вообще форумом ошиблись, такого рода холивары очень любят на ЛОРе.
46. Chai Nic 160 17.12.13 11:51 Сейчас в теме
(45) asved.ru, "можно сделать все на одном порту, одном экземпляре, и мы получим ту же самую параллельность работы" - каким образом, если wsap22.dll - однопоточная?
47. asved.ru 36 17.12.13 12:03 Сейчас в теме
(46) Chai Nic, Вы путаете однопоточность ISAPI-компонента и однопоточность веб-сервера. Никто нам не мешает вызывать функцию однопоточной DLL столько раз, сколько мы хотим, не дожидаясь завершения предыдущего вызова.

Кстати сказать, я не специалист по апачу, но теоретически и в нем должна быть возможность нафоркать сколько нужно рабочих процессов.
49. Chai Nic 160 17.12.13 12:40 Сейчас в теме
(47) asved.ru, "Никто нам не мешает вызывать функцию однопоточной DLL столько раз, сколько мы хотим, не дожидаясь завершения предыдущего вызова" - это всё слова... можете привести рабочий пример настройки ииса, позволяющей во время серверного вызова выполнять серверные вызовы других сеансов 1с?
44. AllexSoft 17.12.13 11:18 Сейчас в теме
(42) asved.ru, кажется вы не прониклись идеей, тема слишком специфична к сожалению... сам пытался подобрать что то более менее готовое, но увы ничего... разве что на роутере (или софт-роутере) настраивать порт форвардинг, но это опять немного не то
41. AllexSoft 17.12.13 10:08 Сейчас в теме
48. AllexSoft 17.12.13 12:24 Сейчас в теме
Кстати сказать, я не специалист по апачу, но теоретически и в нем должна быть возможность нафоркать сколько нужно рабочих процессов

что и делает ТС... говорю же, вы не прониклись идеей, ну или не внимательно читали
50. Chai Nic 160 19.12.13 15:45 Сейчас в теме
Прошу обратить внимание на мою новую публикацию на ту же тему.

http://infostart.ru/public/242527/
51. AllexSoft 20.12.13 16:00 Сейчас в теме
(50) Chai Nic, пропало куда то...
52. Chai Nic 160 20.12.13 16:01 Сейчас в теме
Тема пока убрана.. обнаружились баги, которые пока непонятно как решать.
53. AllexSoft 20.12.13 16:03 Сейчас в теме
(52) Chai Nic, расскажешь про баги?
54. Chai Nic 160 20.12.13 16:13 Сейчас в теме
(53) AllexSoft, при обычной работе всё нормально, а вот при простое клиента сервер 1с ведет себя непредсказуемо.. В версии 8.2 клиент после простоя более 20 минут просто теряет сеанс (вылетает ошибка что сеанс закрыт), в версии 8.3 клиент виснет, а серверный процесс при этом грузит проц.
60. logdog 23.12.13 03:34 Сейчас в теме
(54) Chai Nic, Да, оно (
(55) А в 1С эти баги отправляли?
61. Chai Nic 160 23.12.13 08:00 Сейчас в теме
(60) logdog, вряд ли это баги с точки зрения 1с.. они же не декларировали возможность работы на нескольких серверах через трансляцию с одного порта.
62. AllexSoft 23.12.13 10:19 Сейчас в теме
(61) Chai Nic, вчера на весь день тест маппера поставил своего, проблемы как у тебя не наблюдаю, при простое (тестил до 2х часов) все работает и не отваливается
63. Chai Nic 160 23.12.13 10:30 Сейчас в теме
(62) AllexSoft, хм.. ну тогда даже не знаю, в чем может быть проблема... А ты пробовал отрубать клиентские процессы жестко? Что происходит, когда истекает 20-минутный таймаут веб-модуля? Работает ли переход в монопольный режим, например для удаления помеченных объектов?
64. AllexSoft 23.12.13 10:38 Сейчас в теме
(63) Chai Nic,
А ты пробовал отрубать клиентские процессы жестко?

что имеешь ввиду ?
Что происходит, когда истекает 20-минутный таймаут веб-модуля?

да ничего вроде не происходит, к сожалению лог не включил чтобы смотреть переподключается ли он.. но сегодня наверное еще раз потестю и включу лог
Работает ли переход в монопольный режим, например для удаления помеченных объектов?

тестил подключение через тонкий клиент, ну а почему он не должен переключаться в монопольный режим?
Кстати, мне удавалось заархивировать базу даже с включенными юзерами через апач, наблюдается странный глюк, в активных юзерах никого нет (кроме конфигуратора), хотя юзеры сидят и при мне работают в это время в этой базе
73. logdog 23.12.13 13:14 Сейчас в теме
(62) AllexSoft, версию 8.2 или 8.3 тестили?
74. AllexSoft 23.12.13 13:18 Сейчас в теме
55. AllexSoft 20.12.13 16:24 Сейчас в теме
в версии 8.3 клиент виснет, а серверный процесс при этом грузит проц.

как то очень похоже про то что я тебе в личке писал... у меня вот такая же хрень была, ну только в другой ситуации, которую я тебе описывал
8.2 клиент после простоя более 20 минут просто теряет сеанс (вылетает ошибка что сеанс закрыт)

а он что не пытается проверить коннект ?
56. Chai Nic 160 20.12.13 16:37 Сейчас в теме
(55) "а он что не пытается проверить коннект ?"
Да скорее всего пытается, но таким способом, который несовместим с редиректором..
57. AllexSoft 20.12.13 16:48 Сейчас в теме
(56) Chai Nic, интересно очень... на выходных покопаюсь
58. lustin 21.12.13 23:54 Сейчас в теме
(0) все таки в статье не хватает эксперимента с nginx - он вам даст единый адрес для входа в базу.

upstream backend {
server http://192.168.0.1:8001/buh_base ;
server http://192.168.0.1:8002/buh_base ;
}

дальше мы экспериментировали с Ramdrive
http://blog.a-netz.de/2013/02/persistent-storage-with-ramdisks/

после этого смотрели в сторону виртуализации такой конфигурации
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1013628

в итоге получилась отказоустойчивая виртуалка с базой в памяти с достаточной многопоточностью и с возможностью восстановления

P.S. Основные трудности будут с аутентификацией через AD
59. Chai Nic 160 22.12.13 08:36 Сейчас в теме
(58) lustin, к сожалению, нельзя единый адрес использовать.. Клиент, подключающийся к веб-серверу, должен подключаться именно к конкретному экземпляру веб-сервера, а не к перенаправителю. Это уже проверено. Соответствие веб-модуля с клиентом должно быть взаимно-однозначным. Иначе возникают глюки, описанные в (54).

Еще можно использовать вариант, когда веб-клиенту при подключении к единому адресу будет отдаваться html-директива переадресации, вызывая перезагрузку странички с нового адреса. А для тонкого клиента придется писать собственную запускалку, поскольку он не воспринимает переадресацию в html..
65. Chai Nic 160 23.12.13 10:44 Сейчас в теме
Ну прервать процесс 1cv8c.exe в диспетчере задач, имитировав этим зависание клиентского компа или разрыв сети.. Из списка сеансов через 20 минут сеанс удаляется? Желательно проверить вариант, когда отрубаемый процесс редиректится на другой порт, чем тот, с которого смотрим список сеансов.
66. AllexSoft 23.12.13 10:53 Сейчас в теме
(65) Chai Nic,
Ну прервать процесс 1cv8c.exe в диспетчере задач, имитировав этим зависание клиентского компа или разрыв сети..

делал останов маппера, и его включение через пару секунд, коннект не теряется
Из списка сеансов через 20 минут сеанс удаляется?

Проверю, очень похоже что так и есть
Желательно проверить вариант, когда отрубаемый процесс редиректится на другой порт, чем тот, с которого смотрим список сеансов.

вот это проверить не смогу, я написал только статические маршруты к сожалению, потом узнал что ты пишешь и забил на свое детище )
67. Chai Nic 160 23.12.13 10:58 Сейчас в теме
(66) AllexSoft, "останов маппера, и его включение через пару секунд" - это не то, нужна именно "внезапная смерть клиента".
68. AllexSoft 23.12.13 11:05 Сейчас в теме
(67) Chai Nic,
внезапная смерть клиента

сделал, не зависло ничего, смотрю в активных юзерах, отключенный через диспетчер сеанс висит в активных юзерах, подключился вновь, создался новый сеанс, то есть сейчас висит (конфигуратор, старый отключенный сеанс и новый включенный).. ждем 20 мин, посмотрю отвалится ли или нет
69. Chai Nic 160 23.12.13 11:07 Сейчас в теме
(68) AllexSoft, суть в том, что повторное подключение (которое выводит список сеансов) должно быть через другой экземпляр веб-сервиса.
70. AllexSoft 23.12.13 11:56 Сейчас в теме
(69) Chai Nic, я список сеансов смотрю через конфигуратор, так что ему все равно через какой экземпляр подключился новый коннект
ПС: через 20 мин отключенный сеанс отвалился... новый сеанс висит до сих пор
71. Chai Nic 160 23.12.13 12:48 Сейчас в теме
Я смотрел через другой сеанс, от другого клиентского ip и соответственно, с рабочим процессом на другом экземпляре апача (на другом порту).
72. Chai Nic 160 23.12.13 12:48 Сейчас в теме
В общем, ничего больше сказать не могу. Если у вас это каким-то образом работает - рад за вас.
75. AllexSoft 23.12.13 13:20 Сейчас в теме
(72) Chai Nic, может у тебя пакеты keep-alive не отрабатываются правильно или что то в этом духе ?
76. Chai Nic 160 23.12.13 13:30 Сейчас в теме
(75) AllexSoft, у меня вообще не делается разницы между пакетами. Есть tcp-соединение, оно и транслируется, пока не закончится. На каждое соединениние между клиентом и портом редиректора создается такое же соединение между редиректором и конкретным портом апача, и между ними передаются данные.
77. Chai Nic 160 23.12.13 13:51 Сейчас в теме
Странно.. вот сейчас попробовал - ничего не виснет.. но и зависший сеанс не отключается через 20 минут .. ничего не делал.
78. logdog 23.12.13 16:37 Сейчас в теме
(77)(74)
Для 8.2.19.80 - база БП 2.0
- по прошествии 20 минут (-30) связь не рвется
- если отключить от базы, вроде сессия отключается, не уверен ... так как сейчас висит 4 процесса httpd, вместо 6.
Для 8.3.4.365 - база БП 3.0 (на 8.2 не могу потестить, перевел уже на 8.3, но если нужно ...)
-При загрузке базы, табличка - временный сбой интернет-соединения. Если ее не трогать, можно в базе работать, при закрытии таблички, перезагрузка соединения с базой.
ps было пару раз, что таблички не было и можно было работать, с чем связано и такое поведение - непонятно.
79. kiruha 388 24.12.13 12:36 Сейчас в теме
А в SQL варианте веб сервер работает многопоточно или тоже по умолчанию в один поток ?
80. AllexSoft 24.12.13 12:38 Сейчас в теме
(79) kiruha, в один поток, но там очереди не бывает, так как он всего лишь передатчик на 1C:Сервер, вот там очередь будет ну или на SQL Server, тут смотря что выполняется... поэтому для клиент-серверной смысла не имеет никакого
BTRVODKA; +1 Ответить
81. kiruha 388 24.12.13 12:45 Сейчас в теме
Если ,например, 50 клиентов обращаются к веб сервису 1С в SQL варианте - идет отработка кода вебсервиса -
1 получат данные - остальные будут жевать бамбук пока не отвалятся по тайм ауту ?
Или если они подключились под разными пользователями - то параллельно ?
82. AllexSoft 24.12.13 12:51 Сейчас в теме
(81) kiruha, нет, ибо передача данных всегда быстрее чем их получение\обработка...
хотя вот если у тебя обмены идут через веб-сервисы есть смысл выделить статический второй экземпляр апача конкретно под обмен
83. Chai Nic 160 24.12.13 12:54 Сейчас в теме
(81) kiruha, нет, в клиент-сервере всё будет нормально - там веб-модуль всего лишь посредник по приему-передаче данных, по сути выполняющий функцию обертки серверных вызовов в http-протокол. А в файловой версии в состав веб-модуля входит встроенный сервер 1с, а вот у него один поток обслуживания серверных вызовов для конкретной базы. В принципе ничто не мешало им сделать его многопоточным, но они не захотели создавать конкурента классическому своему серверу, разумеется!
85. logdog 26.12.13 16:05 Сейчас в теме
(83) А под классическим сервером что имеется ввиду?
86. Chai Nic 160 26.12.13 16:23 Сейчас в теме
(85) logdog, обычный сервер 1с для sql-базы
84. kiruha 388 24.12.13 13:39 Сейчас в теме
87. TitanLuchs 395 01.02.14 22:17 Сейчас в теме
Ух ты, недавно как раз возник вопрос подвисания 1С, когда кто-то из юзеров начинает запускать мегаотчеты и мегаобработки. Попробуем потестить, автору - спасибо!
88. Chai Nic 160 14.11.14 17:44 Сейчас в теме
В версии 1с 8.3.5 было исправлено много багов, поэтому публикация http://infostart.ru/public/242527/ становится вновь актуальна. Проверил - версия 8.3.1119 с редиректором (МикроСервер 1с) работает нормально, вылетов и зависаний 1с не замечено. В общем, пробуйте!
89. Chai Nic 160 14.12.19 22:56 Сейчас в теме
Внимание! При использовании последних версий apache 2.4 поменялся минимально необходимый перечень модулей, необходимых для работы модуля 1с. Таким образом, чтобы применить решение для Apache 2.4, нужно перед использованием исправить cmd-файл, добавив строчку

echo LoadModule authz_core_module modules/mod_authz_core.so >> "%CFG_FILE_NAME%"

перед строчкой

echo LoadModule _1cws_module "%MODULE_1C%" >> "%CFG_FILE_NAME%"
119. Chai Nic 160 04.03.22 09:26 Сейчас в теме
(89) внес изменения в скрипт, выложенный для скачивания
90. user911131 25.01.20 05:42 Сейчас в теме
Доброго времени суток, за реал можно приобрести?
91. user911131 14.02.20 00:29 Сейчас в теме
Как я не пытался, решение так и не заработало. Вроде делал все по инструкции, но служба не запускается. Вылетает ошибка. Кстати, "Многопоточный МикроСервер для файловой базы управляемого приложения 1c" заработал.
Имя журнала: Application
Источник: Apache Service
Дата: 14.02.2020 0:24:37
Код события: 3299
Категория задачи:Отсутствует
Уровень: Ошибка
Ключевые слова:Классический
Пользователь: Н/Д
Компьютер: Nikolai-ПК
Описание:
The Apache service named reported the following error:
>>> \xe0\xe9\xe4\xe5\xed \xf3\xea\xe0\xe7\xe0\xed\xed\xfb\xe9 \xec\xee\xe4\xf3\xeb\xfc. .
Xml события:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Apache Service" />
<EventID Qualifiers="0">3299</EventID>
<Level>2</Level>
<Task>0</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2020-02-13T21:24:37.000000000Z" />
<EventRecordID>32014</EventRecordID>
<Channel>Application</Channel>
<Computer>Nikolai-ПК</Computer>
<Security />
</System>
<EventData>
<Data>The Apache service named</Data>
<Data>
</Data>
<Data>reported the following error:
>>></Data>
<Data>\xe0\xe9\xe4\xe5\xed \xf3\xea\xe0\xe7\xe0\xed\xed\xfb\xe9 \xec\xee\xe4\xf3\xeb\xfc.</Data>
<Data>
</Data>
<Data>
</Data>
<Data>
</Data>
<Data>
</Data>
<Data>
</Data>
</EventData>
</Event>
92. user911131 14.02.20 17:10 Сейчас в теме
(91) Пробовал и в Apache 2.4 и 2.2
93. l4h 14.02.20 21:43 Сейчас в теме
(91)куда-то не туда Вы смотрите, смотрите в логи апача. Папка logs файл error.log
94. user911131 15.02.20 21:52 Сейчас в теме
(93) Сори, я с Апачем в первый раз работал. Прикрепил логи от Апача 2.4 и 2.2 Конфиг по-умолчанию оставил. ServerName localhost. Сам по этим логам ничего не нашел, если посмотрите буду признателен.
Прикрепленные файлы:
error.log
error 2.2.log
95. Chai Nic 160 17.02.20 11:35 Сейчас в теме
(94) а выложите область переменных скрипта
96. user911131 17.02.20 17:36 Сейчас в теме
(95) Вот
rem ---------------системно-специфичные переменные ----------------------

set MODULE_1C=C:\Program Files (x86)\1cv8\8.3.13.1926\bin\wsap22.dll
set APACHE_PATH=C:\Program Files (x86)\Apache Software Foundation\Apache2.2

rem ---------------определение значений переменных ----------------------

rem Имя публикации базы на веб-сервере
set BASE_NAME=micro

rem Номер порта
set PORT=8000

rem Путь к базе
set BASE_PATH=E:\test\dkz2_2018

rem Путь к веб-серверу с прямым слешем (для апача)
set APACHE_PATH_FSLASH=%APACHE_PATH:\=/%

rem Путь к каталогу с конфигами экземпляров веб-сервера
set CFG_PATH=%APACHE_PATH%\1C_WEB\CFG

rem Путь к каталогу с параметрами публикации базы 1с в веб-модуле
set VRD_PATH=%APACHE_PATH%\1C_WEB\VRD\%BASE_NAME%

rem Имя сервиса web1c
set SERVICE_NAME=Apache#%BASE_NAME%#%PORT%

rem Создадим каталог с конфигами, если его еще нет
IF NOT EXIST "%CFG_PATH%" mkdir "%CFG_PATH%"

rem Создадим каталог с параметрами публикации базы, если его еще нет
IF NOT EXIST "%VRD_PATH%" mkdir "%VRD_PATH%"

rem Определим имя каталога параметров публикации базы с прямым слешем (для апача)
set VRD_PATH_FSLASH=%VRD_PATH:\=/%

rem Опеределим имя конфигурационного файла
set CFG_FILE_NAME=%CFG_PATH%\%SERVICE_NAME%.cfg

rem Определим имя файла параметров публикации
set VRD_FILE_NAME=%VRD_PATH%\Default.vrd

rem Определим имя файла параметров публикации с прямым слешем (для апача)
set VRD_FILE_NAME_FSLASH=%VRD_FILE_NAME:\=/%
98. Chai Nic 160 18.02.20 12:34 Сейчас в теме
Судя по "File does not exist: C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/micro" в логе апача, вы его запускаете не с тем конфигом, который создал скрипт.
99. user911131 18.02.20 20:26 Сейчас в теме
(98)
Судя по "File does not exist: C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/micro" в логе апача, вы его запускаете не с тем конфигом, который создал скрипт.


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

Опытным путем было установлено, что служба Apache запускается только, если имя базы такое же, как и имя папки, где хранится база.
Оставьте свое сообщение