Как устроен сервер 1С:Предприятия и когда базе нужен клиент-серверный режим
Содержание
Клиент-сервер 1С — это режим работы, при котором база данных лежит не в файле 1Cv8.1CD на общем диске, а в СУБД (MS SQL Server, PostgreSQL, IBM Db2 или Oracle Database), а между пользователями и СУБД стоит сервер 1С:Предприятия. Клиент только показывает формы и передаёт команды. Запросы, проведение документов и расчёты выполняет кластер серверов
1С. Архитектура трёхзвенная: клиент → сервер 1С → сервер СУБД.
На практике переход на клиент-сервер нужен, когда в базе одновременно работают больше 5–10 человек, база выросла до десятков гигабайт или пользователи жалуются на ожидание блокировок. Настройка сводится к трём шагам: поставить сервер 1С, поставить СУБД и зарегистрировать базу в кластере. Всё остальное — тонкая настройка и сопровождение.
Материал ниже относится к платформе 8.3 и не зависит от конфигурации: Бухгалтерия, ЗУП, УТ и ERP работают в клиент-серверном режиме одинаково.
Три звена клиент-серверной архитектуры 1С
Каждое звено — отдельная программа, и их можно разнести по разным машинам.
| Звено | Что это | Что делает |
|---|---|---|
| 🖥️ Клиент | Тонкий клиент 1cv8c.exe, толстый клиент 1cv8.exe, веб-клиент в браузере | Рисует интерфейс, выполняет клиентский код модулей форм |
| ⚙️ Сервер 1С | Служба «Агент сервера 1С:Предприятия 8.3» и её процессы | Выполняет серверный код, запросы, проведение, регламентные задания, выдаёт лицензии |
| 🗄️ СУБД | MS SQL Server, PostgreSQL, IBM Db2, Oracle Database | Хранит таблицы, обеспечивает транзакции и блокировки записей |
Пользователь никогда не подключается к СУБД напрямую. Логин и пароль базы данных знает только сервер 1С: они указаны в параметрах информационной базы в кластере. Поэтому права в 1С разграничиваются средствами самой 1С, а у бухгалтера нет доступа к таблицам SQL.
Тонкий и веб-клиент гоняют по сети только данные форм и результаты вызовов. Отсюда главное преимущество схемы: удалённый филиал может работать через обычный интернет-канал, а в файловом режиме тот же филиал читал бы по сети куски файла базы.
Сервер 1С и СУБД часто ставят на одну машину. Для небольшой компании это нормально: обмен идёт без сети, через память. Разносить звенья имеет смысл, когда одному серверу не хватает памяти или процессорных ядер.
Кластер серверов 1С: агент, менеджер и рабочие процессы
Сервер 1С:Предприятия — не одна программа, а набор процессов, объединённых в кластер. Даже на одной машине это кластер из одного рабочего сервера.
Процессы и порты
- 🔹 ragent — агент сервера. Слушает порт 1540. С него начинается любое подключение клиента и консоли администрирования.
- 🔹 rmngr — менеджер кластера. Порт 1541. Ведёт реестр кластера: список баз, рабочих серверов, сеансов, блокировок.
- 🔹 rphost — рабочие процессы. Порты берутся из диапазона, по умолчанию 1560–1591. Именно здесь выполняется код конфигурации и запросы к СУБД.
Порядок подключения такой: клиент обращается к агенту на 1540, агент передаёт его менеджеру кластера на 1541, менеджер назначает рабочий процесс, и дальше клиент общается с rphost напрямую по порту из диапазона.
Если между клиентами и сервером стоит брандмауэр, открывать нужно все три вида портов, включая весь диапазон рабочих процессов. Открытые 1540 и 1541 без диапазона — частая причина ошибки подключения, когда сервер «вроде бы доступен».
Диапазон портов, ограничение памяти рабочих процессов, число баз и соединений на процесс задаются в свойствах рабочего сервера в консоли. Там же настраиваются требования назначения функциональности: например, можно вынести регламентные задания или фоновые задания на отдельный рабочий сервер.
Что хранится на диске сервера
Служебные данные кластера лежат в каталоге srvinfo (в Windows по умолчанию C:\Program Files\1cv8\srvinfo). В подкаталоге reg_1541 находится реестр кластера — файл 1CV8Clst.lst со списком баз и настроек — и сеансовые данные. Этот каталог надо включить в резервное копирование
: без него после сбоя придётся регистрировать все базы заново.
Несколько серверов в кластере
В кластер можно добавить второй и следующие рабочие серверы. Нагрузка распределяется между ними автоматически, а при назначении сервера центральным он тоже хранит копию реестра кластера и подстраховывает основной. Масштабирование и резервирование кластера требуют лицензии на сервер уровня КОРП.
Файловая база или сервер 1С: сравнение режимов
Файловый режим не хуже и не лучше — он под другую нагрузку. Для ИП и небольшой бухгалтерии на 2–3 рабочих места он удобнее: нечего администрировать.
| Критерий | Файловый режим | Клиент-серверный режим |
|---|---|---|
| Где данные | Один файл 1Cv8.1CD | Таблицы в СУБД |
| Пользователи одновременно | Комфортно — ориентировочно до 5–10 | Десятки и сотни |
| Блокировки | На уровне таблиц: проведение одного документа может заставить ждать остальных | На уровне записей, меньше ожиданий |
| Работа по сети | Каждый клиент читает файл по сети, медленно на слабых каналах | По сети идут только данные форм |
| Лицензии | Клиентские | Клиентские + лицензия на сервер 1С |
| Резервное копирование | Копия файла или выгрузка .dt | Средства СУБД, по расписанию, без остановки работы |
| Администрирование | Почти не нужно | Нужен администратор: служба, СУБД, обновления платформы |
Когда переходить
- 👥 Одновременно работают больше 8–10 пользователей, и тормоза растут с каждым новым сотрудником.
- ⏳ При проведении документов или закрытии месяца другие получают ошибку ожидания блокировки.
- 📦 Размер файла базы — десятки гигабайт, копия по сети делается часами.
- 🌐 Есть удалённые офисы или сотрудники, которые работают через интернет .
- 🔁 Нужны регламентные задания, которые идут сами по расписанию: обмены, загрузка курсов, выгрузка в банк. В файловой базе они выполняются только пока кто-то из пользователей держит базу открытой.
Перенос файловой базы на сервер делают через выгрузку и загрузку .dt: в Конфигураторе файловой базы Администрирование → Выгрузить информационную базу, затем создают пустую базу в кластере и в её Конфигураторе выбирают Администрирование → Загрузить информационную базу. Загрузка требует монопольного доступа к новой базе.
Установка сервера 1С и подключение первой базы
Порядок одинаков для Windows Server 2016 и новее. На Linux меняются только пакеты и способ запуска службы, логика та же.
Шаг 1. Подготовьте СУБД
- Установите MS SQL Server или PostgreSQL. Для PostgreSQL берите сборку, адаптированную для 1С (её выпускают фирма 1С и Postgres Professional), — обычная сборка из репозитория дистрибутива для 1С не подходит.
- Создайте отдельного пользователя СУБД для сервера 1С с правом создавать базы. Не используйте
saилиpostgresв рабочей схеме. - Если СУБД на другой машине, откройте её порт для сервера 1С: у MS SQL по умолчанию 1433, у PostgreSQL 5432.
Шаг 2. Установите сервер 1С:Предприятия
- Запустите установщик платформы той же версии, что и у клиентов. Номер версии сервера и клиента должен совпадать полностью, до последней цифры сборки.
- В списке компонентов отметьте «Сервер 1С:Предприятия» и «Администрирование сервера 1С:Предприятия».
- Согласитесь установить сервер
как службу Windows. Установщик создаст пользователя
USR1CV8, от имени которого служба будет работать. - После установки проверьте, что служба «Агент сервера 1С:Предприятия 8.3» запущена.
Шаг 3. Подключите консоль администрирования
Консоль — оснастка MMC «Администрирование серверов 1С Предприятия». Если она открывается с ошибкой или пустой, зарегистрируйте библиотеку radmin.dll нужной версии из командной строки, запущенной от администратора:
regsvr32 "C:\Program Files\1cv8\8.3.25.1286\bin\radmin.dll"
Номер версии в пути подставьте свой. Эта же команда нужна после каждого обновления платформы на сервере: консоль старой версии к новому агенту не подключится.
В консоли создайте новый центральный сервер (имя компьютера, порт 1540). Кластер «Локальный кластер» с портом 1541 появится автоматически.
Шаг 4. Создайте информационную базу в кластере
Проще всего — из окна запуска 1С на любом клиенте: Добавить → Создание новой информационной базы, тип расположения «На сервере 1С:Предприятия». Дальше заполните параметры:
| Поле | Что указать |
|---|---|
| Кластер серверов 1С:Предприятия | Имя сервера 1С (при нестандартном порте — имя:порт) |
| Имя информационной базы в кластере | Короткое латиницей, например buh_main |
| Тип СУБД | MS SQL Server или PostgreSQL |
| Сервер баз данных | Имя или адрес сервера СУБД |
| Имя базы данных | Имя базы в СУБД, обычно совпадает с именем в кластере |
| Пользователь и пароль сервера БД | Пользователь из шага 1 |
| Смещение дат | Для MS SQL Server — 2000 |
| Создать базу данных в случае ее отсутствия | Отметить |
| Разрешить выдачу лицензий сервером 1С:Предприятия | «Да», если лицензии стоят на сервере |
Для копии рабочей базы (тестовой или для разработчика) включите флажок «Установить блокировку регламентных заданий». Иначе копия начнёт сама выполнять обмены, отправлять отчёты или выгрузки — от имени вашей организации.
Лицензия на сервер 1С активируется на самом сервере. Без неё кластер не даст пользователям войти в базу, исключение — учебная версия.
Мониторинг и диагностика производительности сервера 1С
Когда пользователи говорят «1С тормозит», сначала выясните, где именно: на клиенте, в сервере 1С или в СУБД.
Что смотреть в консоли кластера
- 📋 Сеансы информационной базы: кто подключён, с какого компьютера, какое приложение, сколько времени занимает текущий вызов.
- 🔒 Блокировки: какие объекты держит каждый сеанс. Если один сеанс висит долго, а остальные ждут — виновник обычно виден сразу.
- 🧮 Рабочие процессы: занятая память, число соединений и показатель «Доступная производительность». Его резкое падение говорит о перегрузке процесса.
То же самое доступно из командной строки через сервер администрирования ras и утилиту rac. Это удобно для скриптов и для Linux, где оснастки MMC нет:
ras cluster --port=1545 localhost:1540
rac localhost:1545 cluster list
rac localhost:1545 session list --cluster=<uuid-кластера>
Идентификатор кластера берётся из вывода cluster list. Остальные команды и параметры — в справке rac help.
Технологический журнал
Для разбора долгих запросов и взаимоблокировок включают технологический журнал. Он настраивается файлом logcfg.xml в каталоге conf платформы. В нём указывают каталог логов, события (например, долгие вызовы и ожидания блокировок) и срок хранения. Сервер подхватывает файл без перезапуска.
Не оставляйте полный журнал включённым надолго: на нагруженном сервере он за час занимает гигабайты и сам добавляет нагрузку.
Типовые узкие места
| Симптом | Где искать |
|---|---|
| Медленно у всех, процессор сервера загружен | Рабочие процессы rphost, тяжёлые фоновые и регламентные задания |
| Ошибка «Конфликт блокировок при выполнении транзакции» | Блокировки в консоли, долгие транзакции проведения |
| Медленно только у удалённых пользователей | Канал связи, работа через толстый клиент вместо тонкого |
| Растёт память rphost до предела | Ограничение памяти в свойствах рабочего сервера, утечки в доработках |
| Тормозит СУБД, диск занят на 100% | Статистика и индексы СУБД, регламентное обслуживание базы |
Перезапуск службы агента или принудительное завершение рабочего процесса обрывает сеансы всех пользователей на этом процессе, несохранённые данные пропадут. Делайте это после рабочего дня или заранее предупредив людей. Чаще помогает точечное завершение одного зависшего сеанса в консоли.
Для постоянного мониторинга крупных систем у фирмы 1С есть Центр управления производительностью из Корпоративного инструментального пакета. Небольшой компании обычно хватает консоли кластера и средств мониторинга самой СУБД.
Безопасность кластера и резервное копирование базы
Закройте администрирование
Сразу после установки у кластера нет администратора: любой, кто дотянется до порта 1540 с установленной консолью, может удалить базу из кластера или завершить сеансы. Поэтому:
- Добавьте администратора центрального сервера в узле «Администраторы» консоли.
- Добавьте администратора кластера в свойствах кластера.
- Для каждой информационной базы задайте пользователей 1С с паролями, у администратора базы — отдельный пароль.
- Ограничьте доступ к портам сервера 1С только сетью офиса и VPN. Выставлять 1540–1591 в интернет нельзя.
- Пользователь СУБД для 1С не должен совпадать с суперпользователем СУБД.
Пароли администраторов кластера храните там, где их найдёт ваш преемник. Если пароль администратора кластера потерян, его не «сбрасывают»: останавливают службу и восстанавливают реестр кластера из резервной копии каталога srvinfo либо обращаются к администратору, который его ставил.
Как делать резервные копии
| Способ | Плюсы | Минусы |
|---|---|---|
Бэкап средствами СУБД (план обслуживания MS SQL, pg_dump для PostgreSQL) | Без остановки работы, по расписанию, полный и разностный | Нужно уметь восстанавливать именно этой СУБД |
Выгрузка .dt из Конфигуратора | Переносима между СУБД и файловым режимом | Долго на больших базах, неудобна по расписанию |
Копия каталога srvinfo | Восстанавливает настройки кластера и список баз | Самих данных базы не содержит |
Рабочая схема для большинства компаний: ежедневный полный бэкап СУБД ночью, разностный или журнал транзакций днём, .dt перед обновлением конфигурации и копия srvinfo после изменения настроек кластера.
Бэкап, который ни разу не восстанавливали, — не бэкап. Раз в квартал разворачивайте копию в отдельную тестовую базу с блокировкой регламентных заданий и открывайте её.
Частые вопросы
Можно ли поставить сервер 1С и СУБД на один компьютер?
Обязательно ли покупать MS SQL Server?
Работает ли клиент-серверная база на Linux?
ras и rac или консоль, запущенную на Windows-машине.