Как исправить ошибку Windows Sockets - 10054 (0x00002746) «Удаленный хост принудительно разорвал существующее подключение» в 1С:Предприятии

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

Каждый администратор или разработчик 1С рано или поздно сталкивается с ситуацией, когда длительный ночной процесс (например, восстановление последовательности документов, закрытие месяца или резервное копирование) прерывается неприятной системной ошибкой. В логах или на экране пользователя появляется сообщение: «Ошибка обращения к серверу 1С:Предприятия. по причине: server_addr=tcp://serv-1cv8:1563 descr=Ошибка сетевого доступа к серверу (Windows Sockets - 10054(0x00002746)...». Для регулярного выполнения таких задач настраивают автоматическое архивирование и тестирование баз в тихом режиме.

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

Физический смысл ошибки 10054

С технической точки зрения код ошибки 10054 (WSAECONNRESET) означает, что существующее TCP-соединение было мгновенно разорвано удаленной стороной без прохождения стандартной процедуры закрытия сессии (FIN-пакетов). Вместо этого инициатор разрыва присылает пакет с флагом RST (Reset). Это указывает на то, что удаленный узел «забыл» про данное соединение, его процесс аварийно завершился, либо промежуточное сетевое оборудование принудительно заблокировало трафик.

Выясним основные причины этой проблемы и разберем методы их решения шаг за шагом.

---

Решение 1. Настройка сопоставления имен (Файл hosts)

Очень часто во время выполнения ресурсоемких задач локальный DNS-сервер сети может испытывать кратковременные перегрузки или уходить на техническое обслуживание. Если клиентский компьютер на долю секунды теряет связь с DNS-сервером и не может разрешить сетевое имя сервера 1С (например, serv-1cv8), сессия немедленно сбрасывается.

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

  1. Перейдем на клиентском компьютере по пути: C:\Windows\System32\drivers\etc.
  2. Откроем файл hosts с помощью любого текстового редактора (обязательно с правами администратора).
  3. В самый конец файла добавим строчку соответствия IP-адреса и сетевого имени вашего сервера 1С:

# Пример записи в файле hosts для жесткого сопоставления имени сервера 1С
192.168.1.100    serv-1cv8

Сохраним файл. Теперь операционная система будет обращаться к серверу напрямую по IP-адресу, минуя запросы к DNS-серверу, что исключит сетевые задержки и сбои разрешения имен.

---

Решение 2. Отключение режимов энергосбережения

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

Разберем, как отключить данную опцию на уровне сетевого адаптера:

  1. Откроем диспетчер устройств Windows (вызовем команду devmgmt.msc через меню «Выполнить»).
  2. Развернем ветку Сетевые адаптеры и найдем основную сетевую карту, через которую идет подключение.
  3. Кликнем по ней правой кнопкой мыши и выберем пункт Свойства.
  4. Перейдем на вкладку Управление электропитанием (Power Management).
  5. Снимем флажок с параметра «Разрешить отключение этого устройства для экономии энергии».
  6. Нажмем кнопку ОК для сохранения настроек.

Также настоятельно рекомендуем проверить настройки электропитания в панели управления Windows на сервере и клиенте. Установим схему «Высокая производительность» и запретим переход компьютера в спящий режим.

---

Решение 3. Настройка перезапуска рабочих процессов в кластере 1С

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

Если в этот момент выполнялась долгая транзакция восстановления последовательности, то падение или штатный перезапуск процесса rphost вызовет у клиента ошибку 10054.

Рассмотрим, как правильно настроить параметры кластера:

  1. Запустим утилиту Администрирование серверов 1С:Предприятия.
  2. Перейдем в свойства нашего локального кластера.
  3. Обратим внимание на параметры «Допустимый объем памяти» и «Интервал перезапуска рабочих процессов».
  4. Настроим систему так, чтобы перезапуск процессов происходил в наименее активные часы (например, глубокой ночью до начала регламентных операций или в технологические окна).
  5. Убедимся, что включена опция резервирования процессов, чтобы пользователи могли бесшовно переходить на новые рабочие процессы без жесткого разрыва соединений.

---

Решение 4. Отключение протокола IPv6

Операционные системы Windows по умолчанию отдают приоритет протоколу IPv6 перед IPv4. Если ваша локальная сеть построена исключительно на IPv4, попытки службы сервера 1С установить связь по IPv6 с последующим таймаутом могут приводить к сбросу сетевого сокета.

Для надежного отключения IPv6 проделаем следующие шаги в реестре сервера:

  1. Откроем редактор реестра через команду regedit.
  2. Перейдем по пути: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\Parameters.
  3. Создадим новый параметр типа DWORD (32-бит) с именем DisabledComponents.
  4. Установим его значение равным шестнадцатеричному 0xffffffff.
  5. Перезагрузим сервер для вступления изменений в силу.

---

Решение 5. Защита Windows от ложных срабатываний SYN-flood атак

При выполнении тяжелых групповых обработок документов интенсивность сетевых пакетов между сервером СУБД, сервером 1С и клиентом возрастает лавинообразно. Windows Server может классифицировать этот легитимный всплеск трафика как вредоносную атаку класса SYN-flood и заблокировать порт.

Чтобы избежать этого, мы можем отключить встроенный алгоритм защиты SynAttackProtect:

  1. В редакторе реестра перейдем в ветку: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters.
  2. Найдем или создадим параметр SynAttackProtect (тип DWORD).
  3. Присвоим ему значение 0.
  4. Перезапустим сервер.

---

Решение 6. Настройка параметров TCP Keep-Alive

Если между клиентом и сервером установлено активное сетевое оборудование (маршрутизаторы, шлюзы, аппаратные брандмауэры), они могут разрывать транзитные сессии, которые долгое время кажутся им неактивными. Во время долгого расчета на сервере клиентский компьютер просто «ждет» ответа и не отправляет пакеты, что побуждает сетевое оборудование разорвать «зависшее» соединение.

Мы можем заставить операционную систему чаще отправлять пакеты поддержания активности (Keep-Alive):

  1. В реестре по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters создадим три параметра типа DWORD:
    • KeepAliveTime — установим значение 300000 (время ожидания в миллисекундах перед началом отправки keep-alive пакетов — 5 минут).
    • KeepAliveInterval — установим значение 1000 (интервал между повторными отправками — 1 секунда).
    • TcpMaxDataRetransmissions — установим значение 5 (количество попыток повторной передачи пакета).
  2. Перезагрузим операционную систему.

---

Решение 7. Мониторинг аварийных завершений с помощью Технологического Журнала

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

Для точной диагностики настроим Технологический журнал 1С. Создадим в каталоге настроек платформы (по умолчанию C:\Program Files\1cv8\conf) файл с именем logcfg.xml следующего содержания:


<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="C:\1C_Logs" history="12">
    <event>
      <eq property="Name" value="EXCP"/>
    </event>
    <event>
      <eq property="Name" value="PROC"/>
    </event>
    <property name="all"/>
  </log>
</config>

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

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

← На главную