Почему 1С очень долго запускается в клиент-серверном режиме и как это исправить?

Системный администратор 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

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

Анализ показателей рабочего процесса rhost и очереди вызовов

В клиент-серверном варианте длительный запуск сеанса обычно означает, что клиентское приложение ожидает ответа от сервера при инициализации параметров сеанса, получении метаданных или выполнении процедур при старте системы. Проанализируем консоль администрирования кластера серверов 1С:

  1. Откроем консоль администрирования кластера и перейдем в ветку Рабочие процессы.
  2. Обратим внимание на показатели проблемного процесса rhost.exe: Реакция сервера и Затрачено сервером. При нормальной штатной работе время реакции сервера составляет около 0.1 секунды. Если значения достигают нескольких секунд (от 1 до 8 секунд и выше), это свидетельствует о деградации производительности конкретного рабочего процесса.
  3. Проверим список активных сеансов, распределенных на данный rhost.exe. Когда внутри одного процесса накапливается очередь блокирующих вызовов, все новые подключения (включая запуск клиентов другими пользователями) становятся в очередь ожидания.

Диагностика системных вызовов через Process Monitor

Для поиска истинной причины зависания процесса сервера применим системную утилиту Process Monitor (Procmon). Рассмотрим порядок действий на сервере приложений:

  1. Запустим утилиту от имени администратора на сервере, где функционирует служба ragent.exe.
  2. Установим фильтр событий: Process Name is rhost.exe, исключив нерелевантные события файловой системы и реестра.
  3. Проанализируем результаты перехвата обращений в момент длительного запуска сеанса.

В ходе такого анализа нередко обнаруживается, что рабочий процесс непрерывно отправляет тысячи запросов к удаленным сетевым каталогам или несуществующим файловым ресурсам (со статусами BAD NETWORK PATH, NAME NOT FOUND или PATH NOT FOUND). Если в конфигурации настроено регламентное задание (например, обмен файлами или выгрузка данных), обращающееся к недействительным сетевым путям каждые несколько минут, операционная система уходит в системный таймаут ожидания ответа по протоколу SMB/RPC. Поскольку рабочий процесс блокируется ожиданием ответа от несуществующего ресурса, формируется внутренняя очередь, которая задерживает старт пользовательских сеансов.

Оптимизация параметров кластера серверов 1С

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

В свойствах кластера информационных баз установим следующие значения:

  1. Интервал перезапуска рабочих процессов: зададим значение 86400 секунд (сутки) или 43200 секунд (12 часов), если в системе выполняется большое число объемных регламентных заданий. По умолчанию значение равно 0, что приводит к многонедельной работе процессов без освобождения фрагментированной памяти.
  2. Допустимый объем памяти: установим лимит в килобайтах (например, 20971520 КБ, что соответствует 20 ГБ) в зависимости от общего объема ОЗУ сервера.
  3. Интервал превышения допустимого объема памяти: укажем 60 секунд. При превышении порога кластер выделит новый рабочий процесс, а старый будет плавно выведен из эксплуатации.
  4. Выключенные процессы останавливать через: выставим 60 секунд, чтобы завершенные процессы не занимали системные дескрипторы и память.

В свойствах конкретного Рабочего сервера скорректируем распределение нагрузки:

  1. Количество ИБ на процесс: уменьшим значение (например, с 8 до 3). Это изолирует информационные базы друг от друга и не позволит аварии в одной базе заблокировать работу пользователей других баз.
  2. Количество соединений на процесс: снизим лимит соединений (например, с 128 до 64), распределив нагрузку между несколькими процессами rhost.exe.

Исправление регламентных заданий и программного кода

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

  1. Проверим все расписания регламентных заданий. Задания, выполняющиеся с интервалом от 1 до 3 минут, необходимо проанализировать на предмет целесообразности и увеличить интервал их запуска (например, до 10–15 минут).
  2. Исключим синхронные обращения к сетевым дискам и внешним ресурсам без предварительной валидации их доступности.
  3. В коде процедур, исполняемых по расписанию, добавим обработку исключений и проверку существования каталогов перед началом файловых операций:

КаталогОбмена = Новый Файл(ПутьККаталогу);
Если КаталогОбмена.Существует() Тогда
    // Выполнение процедур обработки файлов
Иначе
    ЗаписьЖурналаРегистрации("СетевойОбмен", УровеньЖурналаРегистрации.Предупреждение, , , "Каталог недоступен: " + ПутьККаталогу);
КонецЕсли;

Сетевые механизмы ОС и криптография

Если серверная часть настроена оптимально, но клиентские приложения на рабочих станциях продолжают открываться с задержкой, выясним сетевые и платформенные факторы:

  1. Проверка списков отзыва сертификатов (CRL): При старте клиента 1С платформа проверяет цифровые подписи исполняемых модулей через системную службу криптографии Windows. Если на рабочих местах интернет-трафик ограничен корпоративным шлюзом (пакеты отбрасываются политикой DROP вместо мгновенного REJECT), служба ожидает таймаута до десятков секунд на каждую библиотеку. Для решения проблемы настроим корректный сброс пакетов на межсетевом экране либо отключим проверку отзыва сертификатов издателей в свойствах обозревателя ОС.
  2. Опрос очередей сетевых принтеров: В момент инициализации интерфейса клиент 1С опрашивает параметры принтера по умолчанию через службу Windows Spooler. Если назначен недоступный или выключенный сетевой принтер, клиент зависает на период сетевого RPC-таймаута. Рекомендуется назначить локальный виртуальный принтер (например, Microsoft Print to PDF) устройством по умолчанию.
  3. Задержки IPv6 и службы имен: Наличие включенного, но ненастроенного протокола IPv6 в сети может приводить к первичным неудачным попыткам соединения и последующему переключению на IPv4 с секундными задержками. Укажем адрес сервера в строке подключения явным образом или корректно настроим DNS-записи.

Очистка кэша и регламентные процедуры СУБД

Завершающим этапом комплексной оптимизации времени запуска является устранение проблем с кэшированием метаданных:

  1. Очистка кэша на клиенте: Поврежденные конфигурационные файлы в каталогах AppData\Local\1C\1Cv8 и AppData\Roaming\1C\1Cv8 вызывают повторные запросы структур метаданных. Запуск клиента с ключом /ClearCache позволяет сбросить временные данные.
  2. Устранение последствий динамических обновлений: При частых динамических обновлениях конфигурации на сервере накапливаются несогласованные кэши метаданных. При входе каждого пользователя сервер вынужден пересчитывать структуры заново. В такой ситуации помогает перезапуск службы 1C:Enterprise Server Agent и очистка серверного кэша конфигураций (каталоги sncfg_...).
  3. Обновление статистик СУБД: Замедление выборки настроек пользователей и системных таблиц часто связано с устареванием планов запросов в MS SQL Server или PostgreSQL. Выполним регламентное обновление статистик с полным сканированием (FULLSCAN) для таблиц метаданных: CONFIG, PARAMS, FILES, а также системных настроек _SystemSettings.
← На главную