Параметр блокировки сервер 1с
Для администратора в программе предусмотрена возможность завершать работу всех активных пользователей (включая пользователя, инициировавшего блокировку) и блокировать вход в программу на определенный период времени.
Такая возможность востребована для проведения профилактических или срочных работ в программе. Обычно такие работы проводят в ночные часы, чтобы не затруднять работу в программе других пользователей. Однако бывают различные внеплановые ситуации. Например, необходимо провести обновление версии программы, восстановление программы после сбоя электроснабжения, резервное копирование информационной базы, или главному бухгалтеру необходимо срочно рассчитать сложный отчет. Большинство этих работ не могут быть проведены, если пользователи продолжают работать в программе.
При работе в клиент-серверном режиме имеется возможность блокировки работы регламентных заданий.
Блокировка работы пользователей производится по соответствующей команде раздела Администрирование - Обслуживание.
Переход к списку Активные пользователи
- Нажмите Активные пользователи для того чтобы посмотреть, какие пользователи в настоящий момент работают в программе.
Информация о состоянии блокировки
Блокировка работы пользователей
Для того чтобы заблокировать работу пользователей, нажмите Установить блокировку. Предварительно программа запрашивает подтверждение администратора. Для подтверждения нажмите ОК.
До начала срока блокировки во время подготовительных работ к завершению работы пользователей можно нажать Остановить и отменить блокировку.
Действия по завершению работы в клиентском приложении
При наступлении времени блокировки будет автоматически выполнена попытка завершения сеансов работы всех пользователей, подключенных к информационной базе, с выдачей соответствующих запросов о сохранении данных и завершении работы. Войти в программу с этого момента будет невозможно, блокировка будет продолжаться до указанного администратором времени. При этом будут выполнены стандартные действия при завершении работы - запрос на завершение (если пользователь настроил себе подтверждение закрытия), отключение торгового оборудования и т.д.
нужно иметь в виду, что к моменту начала блокировки в программе могут существовать "зависшие" сеансы (например, если пользователи в конце рабочего дня забыли выйти из программы, программа зависла или был запущен сложный отчет). Для того чтобы посмотреть данные о текущих сеансах работы, нажмите Активные пользователи. Гарантированное завершение всех пользовательских сеансов возможно только в клиент-серверном варианте программы. В файловом варианте программы требуется завершить "зависшие" сеансы пользователей на их рабочих местах, а также, если необходимо, завершить другие программы, которые подключены к базе по внешнему соединению (COM) или с помощью веб-сервисов.
При попытке войти в программу в период действия блокировки появится предупреждение с инструкцией для администратора. Для того чтобы разрешить работу пользователей, администратору предлагается произвести запуск программы с параметрами:
Новое подключение к информационной базе, начиная с этого момента и до окончания действия блокировки, будет возможно только в том случае, если в параметре командной строки "/UC" или параметре строки соединения "UC" указан код разрешения доступа.
Снятие блокировки работы пользователей
Блокировка работы пользователей после наступления указанного администратором срока снимается автоматически.
Не завершая работу в программе, после окончания запланированных работ до окончания срока блокировки нажать Блокировка работы пользователей раздела Администрирование - Поддержка и обслуживание, открыть это окно, нажать Снять блокировку;
Войти в программу и снять блокировку для всех пользователей, используя указанные в предупреждении параметры запуска"/С РазрешитьРаботуПользователей" и "/UC" с кодом разрешения доступа, который был указан при установке блокировки;
Примечание: запуск клиентского приложения с параметром РазрешитьРаботуПользователей предназначен только для снятия блокировки и не предназначен для работы с программой.
после проведения запланированных работ до окончания срока блокировки выбрать команду Блокировка работы пользователей в разделе Администрирование - Поддержка и обслуживание, нажать кнопку Снять блокировку.
Использование параметров запуска программы
При запуске программы могут использоваться различные параметры. Подробнее о параметрах запуска см. документацию к платформе.
Для установки блокировки также можно использовать запуск программы с параметром ЗавершитьРаботуПользователей:
"C:\Program Files\1cv8\bin\1cv8.exe" ENTERPRISE /F"C:\Documents and Settings\Админ\Мои документы\1C\DemoSSL" /N <имя администратора>/P /C ЗавершитьРаботуПользователейимя>
Для снятия блокировки рекомендуется использовать запуск программы с параметром РазрешитьРаботуПользователей.
"C:\Program Files\1cv8\bin\1cv8.exe" ENTERPRISE /F"C:\Documents and Settings\Админ\Мои документы\1C\DemoSSL" /C РазрешитьРаботуПользователей /UC
Запуск клиентского приложения с параметром РазрешитьРаботуПользователей предназначен только для снятия блокировки и не предназначен для работы с программой, т.е. этот параметр предназначен для выполнения в пакетном режиме - работа клиентского приложения, запущенного с этим параметром, будет завершена сразу после запуска.
Дополнительные возможности и ограничения
В клиент-серверном варианте работы также есть возможность заблокировать выполнение регламентных и фоновых заданий. Для этого может потребоваться ввести дополнительные параметры для подключения к кластеру серверов по команде Параметры администрирования программы. Кроме того, для выполнения действий установки и снятия блокировки работы пользователей также можно использовать утилиту администрирования кластера серверов 1С:Предприятия.
В клиент-серверном режиме работы не гарантируется завершение всех регламентных и фоновых заданий (когда, в редких случаях, они не могут быть завершены принудительно).
В файловом режиме работы блокировка соединений не может быть установлена, если с базой в данный момент времени работают через COM (внешнее соединение), веб-сервисы или открыт Конфигуратор.
На практике часто возникает необходимость выгнать всех пользователей из 1С или завершить сеансы принудительно с последующей настройкой блокировки начала новых сеансов. Для чего это нужно? Для того чтобы разработчик мог спокойно применить все изменеия в конфигурации базы данных и пользователи не помешали ему в этом.
Включаем блокировку соединений с информационной базой 1C
Подключаемся на свой сервер 1С, открываем консоль кластеров, находи свою базу данных, прожимаем правой кнопкой мыши по базе и заходим в свойства нашей базы данных 1С.
Тут мы отмечаем чекбокс напротив Блокировка начала сеансов включена. Ниже мы можем настроить начало и конец блокировки сеансов установив необходимую нам дату в формате yyy-mm-dd hh:mm:ss. А при необходимости доступа к базе 1С мы можем установить Код разрешения для монопольного доступа в базу. Теперь все попытки пользователей ломиться в базу будут обречены, так что они будут ломиться в IT отдел 😁.
Внимание: Также на время блокировки рекомендую останавливать все фоновые задания, отметив чекбоксом пункт Блокировка регламентных заданий включена.
Завершаем зависшие сеансы из консоли кластера серверов 1С
Но 1С была бы не 1С, если бы она работала нормально и никогда не глючила. К чему это я? Есть такие фантомные 👽 обитатели на кластерах 1С как зависшие сеаны. Их то нам как раз и необходимо схлопнуть! В консоли выбираем нашу базу, в раскрышемся списке переходим по пункту Сеансы и в окне справа будут все активные сеансы (в том числе и наши зависшие). Выбираем все сеансы и Правая кнопка мыши/Удалить
Внимание: Во избежание всемирного коллапса и хаоса, так как пользователи могут проработать весь день и ни разу не сохранить введёные или данные в документ, обязательно уведомлите их заранее и перед завершением сеанса сообщите дополнительно о вашем намерении и необходимости завершении их сеансов.
Получаем монополный доступ к информационной базе с кодом разрешения
Всё, блокировку настроили, сеансы подчистили. Как теперь попасть в информационную базу 1С? Запускаем 1С предприятие, выбираем нашу базу, нажимаем Изменить/Далее и в поле Дополнительные параметры запуска вводим нашь код разрешения через пробел от ключа /uc вначале параметра. Готово, Можно стартовать!
Ошибка запрета начала сеанса возникает в файловой и клиент-серверных вариантах информационных баз 1С.
Вообще данный механизм предназначен для блокировки входа пользователя в базу на время регламентных работ/
Администратор системы может установить такую блокировку.
Механизм автообновления, выполнения резервного копирования также устанавливает блокировку на время обновления и снимает после его окончания. Иногда обратно он ее не снимает.
Как установить такую блокировку в файловой базе?
В управляемой форме — версия 3.0 Бухгалтерии предприятия, Управление небольшой фирмой или Управление торговлей 11.2
Зайти в меню Администрирование в подраздел «Поддержка и обслуживание», а там нажать на ссылку «Блокировка работы пользователей»
В открывшемся диалоге доступно:
После этого система в течении 1-5 минут отключит пользователей от системы.
В клиент-серверной базе
- Пуск\1C Предприятие 8 (x86-64)\ Дополнительно\Администрирование серверов 1С Предприятия
- В 1CV8 Servers (x86-64)\Central 1C Enterprise 8.3 Server
- Выбираем наш сервер \Кластеры \Локальный кластер\
Становимся на базу данных – нажимаем правой кнопкой мыши и выбираем «Свойства»:
Устанавливаем флажок «Блокировка начала сеансов включена»
1С сама запустится:
- когда закончится период
- при снятии блокировки
Как войти в такую базу в момент ее блокировки?
Для того чтобы зайти необходимо запустить 1С с ключем /UC и указать секретный код
Например вот так (я указал этот ключ «Секретный» поэтому его и ввожу):
Варианты альтернативного входа
Если забыли код или забыли внести окончание периода
- Попробовать запуск с пустым кодом «/UC»
- Сменить дату на ПК. Например на год назад/код вперед, ели войдет снять блокировку и вернуть время назад
- Удалить файл 1Cv8.cdn в каталоге базы. Он содержит информацию по блокировке:
- Обновление конфигурации БД в фоновом режиме;
- Доп.управление распределением по рабочим серверам кластера в разрезе ИБ, видов клиентских приложений и фоновых заданий:
- сервисов кластера;
- соединений с ИБ.
- безопасность расхода памяти за один вызов;
- количество инфобаз на процесс;
- объем памяти рабочих процессов, по достижении коего сервер считается производительным;
- максимальный объем памяти рабочих процессов;
- стратегия балансировки (по памяти, по производительности).
Почти все примеры изменений настроек, которые будут приведены в данной статье, иллюстрируют возможность Консоли сервера 1С, то есть, в свете новых правил, такие изменения на рабочем сервере требуют использования лицензии версии КОРП.
Консоль управления сервером 1С или консоль администрирования серверов 1С, или консоль кластера серверов 1С – это утилита, входящая в состав 1С Предприятие 8.3, которая необходима для:
- Управления сеансами;
- Управления списком баз;
- Создания кластеров 1С для отказоустойчивой архитектуры и для масштабируемости;
- Гибкой настройки работы рабочих процессов;
- Ограничения потребления ресурсов;
- Разграничения выполняемых задач рабочими серверами (чтобы выносить отдельные сервисы на различные рабочие сервера);
- Управления профилями безопасности.
Рис.1 Консоль администрирования
Если вы хотите подобрать сервер для 1С 8.3, обратитесь к нашим специалистам оп телефону или прямо на сайте.
Управление базами данных в консоли кластера
При работе в клиент-серверной архитектуре пользователи, скорей всего, так или иначе, сталкиваются с консолью администрирования серверов, как минимум, когда добавляют новую базу в список информационных баз. Чтобы добавить новую базу, необходимо кликнуть правой кнопкой мышки на информационные базы и выбрать пункт «Создать».
Рис.3 Окно управления
В этом окне заполняются настройки подключения к СУБД, а при ее отсутствии можно воспользоваться опцией «Создать базу в случае ее отсутствия». Остальные настройки можно оставить по умолчанию.
Также можно открыть окно этих же настроек уже созданной информационной базы, для чего необходимо кликнуть правой кнопкой мыши на информационную базу и выбрать пункт меню «Свойства».
Рис.4 Свойства
Здесь мы может установить блокировку начала сеансов (установить блокировку на определенный период). Пока установлена блокировка, ни один сеанс не сможет подключиться к базе.
Рис.5 Блокировка начала сеансов
Эта опция может применяться, например, при проведении каких-либо регламентных работ с базой (как правило, это обновление базы). Но когда требуется вход администраторов в базу с наложенной блокировкой сеансов, нужно воспользоваться опцией «Код разрешения». Указав код, в будущем, используя его, можно будет работать с базой. Например, установим код разращения 123, чтобы позже зайти в базу. С кодом разрешения необходимо использовать параметр /UC.
Рис.7 С кодом разрешения необходимо использовать параметр /UC
Параметр блокировки – произвольный параметр, который можно использовать в программном коде. Блокировка получится при использовании функции ПолучитьБлокировкуСеансов().
Блокировка регламентных заданий включена – означает, что в нашей базе данных не будут выполняться регламентные задания.
Рассмотренные опции используются наиболее часто. Остальные в жизни применяются очень редко, и информацию о них можно почитать на ИТС.
Работа с сеансами консоли администрирования
В консоли администрирования можно управлять подключенными сеансами определенной БД, а также общими сеансами на данном кластере.
Рис.8 Работа с сеансами
Рис.9 Окно с сеансами выглядит так
Из этого окна можно получить большой объем информации, начиная с того, какого пользователя этот сеанс, и заканчивая данными потребления памяти сеансом, а также – сколько было получено данных СУБД, сколько было затрачено процессорного времени и многое другое.
Рис.10 Задать текст
Рис.11 Профили безопасности
С помощью профилей безопасности можно настроить, какие модули могут расширяться расширениями, ограничивать расширения определенных модулей конфигурации, ограничивать доступ к файловой системе из прикладного кода, ограничивать доступ к COM объектам, к внешним компонентам, к сторонним приложениям и т.д.
Рабочие процессы (объединение в кластер)
В платформе 1С 8.2 можно было вручную создавать рабочие процессы сервера приложений (рабочий процесс rphost). В 8.3 рабочие процессы создает ragent. Количеством одновременно работающих процессов можно управлять косвенно, через настройки рабочих серверов.
Рис.12 Рабочие процессы
Рис.13 Объединение в кластер
При использовании настроек, заданных по умолчанию, будет использован один rphost на 8 информационных баз или на 128 соединений. Если у вас 32-разрядная ОС (т.е. существуют ограничения по потреблению оперативной памяти на один процесс), рекомендуется изменить эти значения, например, установить одну базу на процесс и уменьшить количество соединений. Оптимальное количество соединений подбирается эмпирически и во многом зависит от конкретной конфигурации и количества фоновых заданий.
Поскольку мы рассматриваем свойства рабочих процессов, стоит упомянуть про другие настройки:
Максимальный объем памяти рабочих процессов, значение в байтах (доступный всем рабочим процессам кластера на данном рабочем сервере).
Может принимать значение от -1 до 9 223 372 036 854 775 807:
- -1 – без ограничений;
- 0 – определяется автоматически как 80% объема оперативной памяти сервера.
Безопасный расход памяти за один вызов значение в байтах.
Может принимать значение от -1 до 9 223 372 036 854 775 807:
- -1 – любой вызов сервера считается опасным, если за время вызова сервера достигнут максимальный объем памяти рабочего процесса;
- 0 – значение объема определяется автоматически, как 5% максимального объема памяти рабочих процессов на данном рабочем сервере.
Если за время вызова объем памяти превысил параметр Безопасный расход памяти за один вызов, и общее потребление памяти всеми процессами rphost превысило значение, установленное в Максимальный объем памяти рабочих процессов, такой вызов будет прерван.
Объем памяти рабочих процессов, до которого сервер считается производительным, измеряется в байтах. Значение 0 показывает, что ограничение не установлено. Общий объем памяти, занятый всеми рабочими процессами этого рабочего сервера, по достижению которого на этот рабочий сервер перестанут назначаться новые соединения.
Флаг менеджер под каждый сервис означает, что будет назначен отдельный экземпляр менеджера кластера (процесс rmngr) под каждый сервис. Список сервисов, которые выполняются в кластере:
Рис.14 Список сервисов, которые выполняются в кластере
Флаг Центральный сервер означает, что данный сервер сможет применять соединения и выполнять синхронизацию реестра кластера.
Настройки рабочих процессов можно применять только при использовании КОРП лицензий! Если у вас ПРОФ лицензия, настройки будут доступны, однако на пользование ими у вас не будет прав.
Объединение серверов в кластер
Сервера 1С можно объединять в кластер для решения задач масштабируемости (распределения нагрузки) и отказоустойчивости. Объединяются сервера в кластер просто, достаточно создать рабочий сервер.
Рис.15 Создаем рабочий кластер
Если в новом сервере не устанавливать опцию «центральный сервер», то такой сервер будет считаться рабочим и не сможет принимать на себя подключение сеансов. Такая архитектура взаимодействия серверов применяется для масштабируемости, она не может быть отказоустойчивой, поскольку для этого должны быть центральные сервера, а также задан уровень отказоустойчивости в свойствах кластера.
Рис.16 Новый сервер
Рис.17 Окно настроек
Уровень отказоустойчивости задается как количество центральных серверов -1.
В окне настроек также можно задавать ограничения потребления ресурсов на рабочий процесс (rphost). Настройки будут заданы на весь кластер.
Рис.18 Настройки будут заданы на весь кластер
Интервал перезапуска – интервал в секундах, через который будет перезапущен рабочий процесс. Отсчет начинается с момента установки данной опции.
Допустимый объем памяти стоит устанавливать из расчета, что в случае срабатывания условия превышения показателя будет запущен еще один процесс rphost того же объема, т.е. момент времени у нас будет два процесса, пока соединения со старого не переключатся на новый.
Интервал превышения допустимого объема памяти – интервал в секундах, в течение которого допустимо потребление памяти, установленное в параметре Допустимый объем памяти.
Интервал превышения допустимого объема памяти. Если значение свойства Допустимого отклонения количества ошибок сервера равно 0, то проверка отклонения количества ошибок не выполняется. Вне зависимости от установленного значения этого свойства рабочий процесс, который совершает не более 1 ошибки на 100 запросов, считается функционирующим нормально и не признается проблемным. Рассмотрим пример работы свойства Допустимое отклонение количества ошибок сервера. Допустим, на 100 запросов фиксируется, в среднем, 2 ошибки за последние 5 минут. Если свойство Допустимое отклонение количества ошибок сервера установлено в значение 50, то проблемным будет считаться тот рабочий процесс, для которого будет фиксироваться более 3 ошибок на 100 запросов.
Перезапуск процессов происходит «мягко»:
- Запускается новый процесс rphost;
- Старый процесс rphost выключается, но не завершается;
- Соединения назначаются на только что созданный процесс rphost, который сразу полноценно включается в работу;
- Старый процесс будет поддерживать существующие на нем вызовы. Поддержка работы уже назначенных вызовов будет происходить в течение времени, установленного в параметре «Выключенные процессы останавливать через» секунд.
Назначение отдельных сервисов на различные рабочие сервера
При объединении нескольких серверов в кластер, мы можем выносить определенные сервисы на отдельные сервера. Например, мы можем вынести работу фоновых заданий на отдельный сервер или сделать сервер лицензирования (сервер, который будет раздавать клиентские лицензии). Полный список сервисов, которые выполняет сервер и которые можно переназначать:
Рис.19 Назначение отдельных сервисов на различные рабочие сервера
Назначение сервиса на определенный рабочий сервер выполняется через требования назначения функциональности.
Рис.20 Назначение сервиса на определенный рабочий сервер
Рис.21 Требования назначения функциональности
В статье были рассмотрены основные возможности консоли администрирования, но эта тема очень обширная и исчерпывающую информацию о конкретной функциональности утилиты администрирования можно найти на ИТС.
Сегодня речь пойдет о блокировках как на уровне 1С 8.3 и 8.2, так и на уровне СУБД. Блокировка данных — обязательный элемент любой системы, количество пользователей в которой больше одного.
Ниже я распишу, как работают блокировки, и каких типов они бывают.
Блокировка — это информация о том, что ресурс системы захвачен другим пользователем. Бытует мнение, что блокировка — это ошибка. Нет, блокировка — это неизбежная мера в многопользовательской системе для разделения ресурсов.
Вред системе могут принести только избыточные («лишние») блокировки, это те блокировки, которые блокируют лишнюю информацию. Такие блокировки необходимо научиться устранять, они могут привести к неоптимальной работе системы.
Типы блокировок 1С
Блокировки в 1С делятся условно на объектные и транзакционные.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>Объектные бывают, в свою очередь, оптимистическими и пессимистическими. А транзакционные можно разделить на управляемые и автоматические.
Объектные блокировки 1С
Данный вид блокировок полностью реализован на уровне платформы 1С и никак не затрагивает СУБД.
Пессимистические блокировки
Эта блокировка срабатывает, когда один пользователь что-то изменил в форме справочника, а второй пытается так же изменить объект в форме.
Оптимистические блокировки
Данная блокировка сравнивает версии объекта: если два пользователя открыли форму, и один из них изменил и записал объект, то второму при записи система выдаст ошибку, что версии объектов отличаются.
Транзакционные блокировки 1С
Механизм тразакционных блокировок 1С гораздо интереснее и более функционален, чем механизм объектных блокировок. В этом механизме активно участвуют блокировки на уровне СУБД.
Неверная работа транзакционных блокировок может привести с следующим проблемам:
- проблема потерянного изменения;
- проблема грязного чтения;
- неповторяемость чтения;
- чтение фантомов.
Подробно эти проблемы были рассмотрены в статье об уровнях изоляции транзакции.
Автоматические транзакционные блокировки 1С и СУБД
В автоматическом режиме работы за блокировки целиком и полностью отвечает СУБД. Разработчик в данном случае абсолютно не участвует в процессе. Это облегчает труд программиста 1С, однако создание информационной системы для большого количества пользователей на автоматических блокировках нежелательно (особенно для СУБД PostgreSQL, Oracle BD — при модификации данных они полностью блокируют таблицу).
Для разных СУБД в автоматическом режиме используются разные степени изоляции:
- SERIALIZABLE на всю таблицу – файловый режим 1С, PostgreSQL, Oracle;
- SERIALIZABLE на записи – MS SQL, IBM DB2 при работе с не объектными сущностями;
- REPEATABLE READ на записи – MS SQL, IBM DB2 при работе с объектными сущностями.
Управляемые режим транзакционных блокировок 1С и СУБД
В режиме управляемых блокировок всю ответственность на себя берет разработчик прикладного решения на уровне 1С. При этом СУБД устанавливает достаточно высокий уровень изоляции для транзакций — READ COMMITED (SERIALIZABLE для файловой СУБД).
При выполнении любой операции с БД менеджер блокировок 1С анализирует возможность блокировки (захвата) ресурса. Блокировки одного и того же пользователя всегда совместимы.
Две блокировки НЕ совместимы, если: установлены разными пользователями, имеют несовместимые виды (исключительная/разделяемая) и установлены на один и тот же ресурс.
Физическая реализация блокировок в СУБД
Физически блокировки представляют собой таблицу, которая находится в БД под названием master. Сама таблица блокировок носит имя syslockinfo.
Таблица условно имеет четыре поля:
- ИД блокирующей сессии SPID;
- что именно заблокировано RES ID;
- тип блокировки — S,U или XMODE (на самом деле в MS SQL их 22 типа, однако в связки с 1С используется только три);
- состояние блокировки — может принимать значение GRANT (установлена) и WAIT (ожидает своей очереди).
Для завершения транзакции на уровне SQL можно использовать команду KILL с указанием идентификатора сессии:
Таблица совместимости разных типов блокировок
- S — разделяемая блокировка (чтения);
- U — блокировка обновления (установленная в запросе конструкцией «ДЛЯ ИЗМЕНЕНИЯ»);
- X — исключительная (эксклюзивная) блокировка (на запись).
Читайте также:
Как описываются машины в рекламных проспектах? “Волнующие”, “эффектные”, “изящные”, “грациозные”, “обтекаемой формы”. Прямо не знаешь, куда их вести — в гараж или в номер мотеля.
— Роберт Орбен