Для начала скажу, что я не гуру ни в Apache, ни в 1С, ни в IIS. Тем не менее, окунуться пришлось, так как передо мной встала простая задача — локальная сеть плюс несколько баз 1С:8.3 плюс несколько пользователей. И, естественно, защита от возможных сбоев …и минимальный бюджет.
Не буду писать про попытку, в общем удачную, использования 1С совместно с sql-сервером postgres. Снимаю шляпу перед этой СУБД, но я от этого пути отказался.
Выбор пал на использование файловых версий баз и публикацию их на веб-сервере. 1С работает с Apache и IIS. Про достоинства Apachе можно не рассказывать — у всех на слуху. В отношении 1С можно добавить лишь то, что публикация баз происходит на Apache без дополнительных настроек. Повозиться пришлось лишь с дистрибутивом этого популярного веб-сервера, который грамотно пропишется в установленных программах ОС Windows. Да, забыл упомянуть, что всё разворачивается на этих ОС. Проблема состоит в том, что 1С не видит Apache, если сервер установлен простым копированием. Баловался созданием кустарных установщиков Apache для того, чтобы версию 2.4 поставить — не помогло. Ну не видит 1С-ка веб-сервер и всё тут. Тем не менее, подходящий дистрибутив версии 2.2 был найден.
Всё пошло как по маслу. До начала реальной работы нескольких пользователей с несколькими базами. Периодически у всех в сети появлялась надпись «Сеанс отсутствует или удалён» с предложением перезагрузить базу, либо выйти. Программа при этом, что логично, прекращала работу у всех пользователей сразу. Работа в таком режиме продолжалась. Потерь данных не было, но терпение моё и сотрудников не было безгранично. Попытки найти решение на просторах интернета не привели ни к чему, кроме усугубления ситуации при изменении параметров работы Apache (ThreadsPerChild; MaxRequestsPerChild; TimeOut).
Тогда я решил пробовать перейти с Apache на IIS. При этом, IIS поднимался на платформе обычной настольной Win7x64 из состава штатной поставки операционки. По настройкам IIS под нужды веб-сервиса 1С в сети информации много. Например вот тут. Сначала всё шло неплохо, но…
Через непродолжительное время опять произошло падение с той же самой ошибкой.
Тогда я попробовал создать несколько пулов приложений и распределить веб-приложения (базы) между ними. В результате w3wp.exe, рабочий процесс IIS, был запущен столько раз, сколько пулов приложений было задействовано при загрузке баз данных. При этом именем пользователя каждого запущенного процесса стало имя пула приложений IIS. Нагрузка была распределена.
Что могу сказать? Сутки работы проходят без сбоев. Заметно увеличилось потребление оперативной памяти. Но раньше оно, возможно, тоже было бы большим. Просто процессы и httpd сервера Apache, и w3wp сервера IIS вылетали до нужного разрастания. По достижении некоторой критической массы.
Будут вопросы, буду рад ответить.
P. S. При написании заметки ни одно животное не пострадало. Все права, принадлежащие разработчикам и/или владельцам торговых марок и продуктов упомянутых в статье, остаются им принадлежать.
Официальные сайты упомянутых продуктов: