Почему при работе с одной базой 1С вылетают все остальные и как бороться с зависаниями сервера?

Системный администратор 1С v8.3 (Обычные формы)
← На главную

В практике администрирования 1С часто встречается ситуация, когда попытка «подлечить» одну информационную базу приводит к аварийному завершению работы всех пользователей на сервере. Разберем детально, почему это происходит, как восстановить работоспособность системы и какие превентивные меры помогут избежать подобных сбоев в будущем.

Причина массового отключения пользователей: архитектура рабочих процессов

Для начала проанализируем ситуацию, описанную в обращении. Когда администратор запускает тяжелую операцию, такую как Тестирование и исправление (ТиС), нагрузка на серверную часть 1С возрастает экспоненциально. Основная причина того, что «выкинуло всех», кроется в настройках кластера серверов.

По умолчанию в кластере 1С несколько информационных баз могут обслуживаться одним и тем же рабочим процессом rphost.exe. Если в одной базе запускается ресурсоемкий процесс, который приводит к критической ошибке, переполнению памяти или аварийному завершению rphost, все сеансы пользователей других баз, находящиеся в этом же процессе, также обрываются. Выясним, как это предотвратить:

  1. Откройте консоль «Администрирование серверов 1С Предприятия».
  2. Перейдите в свойства вашего кластера.
  3. Найдите параметры «Количество информационных баз на один рабочий процесс» и «Количество соединений на один рабочий процесс».
  4. Настройте систему таким образом, чтобы критически важные базы работали в изолированных процессах, либо ограничьте число баз на один rphost до 1, если ресурсы сервера позволяют это сделать.

Влияние регламентных операций на стабильность

Рассмотрим подробнее операцию Тестирование и исправление. Это мощный инструмент, который блокирует таблицу или всю базу данных для выполнения низкоуровневых проверок. Если база находится в клиент-серверном варианте под управлением SQL Server 2012, запуск ТиС вызывает колоссальную нагрузку на системную базу tempdb.

Проанализируем ситуацию со стороны СУБД: если tempdb расположена на медленном дисковом массиве или на диске закончилось место в момент реиндексации, SQL-сервер перестает отвечать на запросы других сессий. В результате сервер приложений 1С разрывает соединения по тайм-ауту, и пользователи видят окно с ошибкой «Соединение с сервером прервано».

Проблема «зависания» и очистка кэша в терминальном режиме

Часто пользователи жалуются, что база «тупо зависает» при старте. Разберем, почему это происходит именно в терминальной среде. При каждом запуске 1С обращается к локальному кэшу метаданных, который хранится в профиле пользователя. Если предыдущий сеанс был завершен некорректно (например, админ «убил» процесс или моргнул свет), файлы кэша могут повредиться.

В этом случае помогает только полная очистка временных папок. Рассмотрим процедуру, которую должен выполнять администратор:

  1. Завершите все процессы 1cv8.exe в сеансе пользователя.
  2. Перейдите в директории:
    • %AppData%\1C\1Cv8\
    • %LocalAppData%\1C\1Cv8\
  3. Удалите все папки с именами в виде длинных идентификаторов (GUID).

Чтобы не делать это вручную каждый раз, мы рекомендуем использовать скрипт очистки кэша при входе или выходе пользователя из терминальной сессии. Посмотрим на пример простого .bat файла для автоматизации:


rmdir /s /q "%AppData%\1C\1Cv8"
rmdir /s /q "%LocalAppData%\1C\1Cv8"
mkdir "%AppData%\1C\1Cv8"
mkdir "%LocalAppData%\1C\1Cv8"

Важный момент: использование параметра запуска /ClearCache не всегда решает проблему, так как он очищает только кэш запросов, но не кэш конфигурации и форм.

Настройка SQL Server 2012 для работы с 1С

Выясним причину возможных «замираний» всей системы через настройки SQL-сервера. Для стабильной работы 1С крайне важен параметр Max Degree of Parallelism (MAXDOP).

Если этот параметр установлен в значение 0 (по умолчанию), один тяжелый запрос (например, при расчете себестоимости или том же ТиС) может занять все доступные ядра процессора. Проанализируем рекомендации: для 1С рекомендуется устанавливать MAXDOP равным 1. Это гарантирует, что один процесс не парализует работу всего сервера, оставляя ресурсы для обслуживания других запросов пользователей.

Инфраструктурные факторы: IPv6 и Антивирус

Иногда корень проблемы лежит глубже уровня 1С. Рассмотрим два часто игнорируемых фактора:

1. Протокол IPv6: В операционных системах Windows Server он включен по умолчанию. Часто сервер 1С пытается разрешить имя сервера через IPv6, что приводит к задержкам в 15-20 секунд при каждом обращении к базе. Это выглядит как «зависание». Рекомендуется либо отключить IPv6, либо жестко прописать приоритет IPv4 в реестре и файле hosts.

2. Антивирусное сканирование: 1С создает множество мелких временных файлов. Если антивирус на терминальном сервере настроен на сканирование «на лету», он блокирует эти файлы для проверки. Посмотрим, что нужно добавить в исключения:

Алгоритм действий при возникновении сбоя

Если вы столкнулись с ситуацией, когда сервер «встал», проанализируем последовательность шагов для быстрого восстановления:

  1. Остановка «виновника»: Попробуйте завершить соединение именно той базы, в которой велись работы, через «Консоль администрирования».
  2. Рестарт службы: Если консоль не отвечает, необходимо перезапустить службу Агент сервера 1С:Предприятия. Помните, что это прервет работу всех пользователей.
  3. Очистка блокировок: Если после рестарта службы база не запускается, проверьте консоль SQL Server на наличие «висящих» транзакций и блокировок в Activity Monitor.
  4. Очистка кэша: Для пользователей, которые не могут зайти после сбоя, выполните очистку локальных папок 1Cv8, как было описано выше.

Таким образом, стабильная работа сервера 1С обеспечивается не только мощным железом, но и правильной изоляцией рабочих процессов, настройкой СУБД и регулярной гигиеной кэша пользователей.

← На главную