Почему самопроизвольно закрывается 1С:Бухгалтерия и как исправить сетевую ошибку 10054 (WSAECONNRESET)?

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

Каждый системный администратор и опытный программист 1С рано или поздно сталкивается с ситуацией, когда пользователи начинают жаловаться на внезапное закрытие программы. Особенно неприятно, когда это происходит посреди рабочего дня, прерывая проведение важных документов или формирование сложных отчетов. В клиент-серверном варианте работы (особенно в связке платформы 1С с СУБД MS SQL Server) виновником такого поведения чаще всего становится системный сбой соединения, известный как Ошибка 10054 (WSAECONNRESET). Физически это означает, что удаленный хост принудительно разорвал существующее подключение.

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

Что представляет собой ошибка 10054 (WSAECONNRESET) в контексте 1С?

Когда пользователь работает в 1С:Бухгалтерии, его клиентское приложение (толстый или тонкий клиент) постоянно обменивается пакетами данных с сервером приложений 1С (процессом rphost.exe). Сервер приложений, в свою очередь, транслирует запросы к СУБД MS SQL (процесс sqlservr.exe). Если на любом из этих участков происходит разрыв TCP-соединения, ОС Windows генерирует системное событие WSAECONNRESET с кодом 10054.

Проанализируем основные причины возникновения этой неполадки:

  1. Нестабильная работа сетевого протокола IPv6, который включен по умолчанию в современных операционных системах.
  2. Аварийное завершение (падение) рабочего процесса 1С rphost.exe из-за нехватки оперативной памяти или ошибок платформы.
  3. Ложное срабатывание защитных механизмов Windows Server (например, защиты от SYN-наводнений SynAttackProtect).
  4. Тайм-ауты сетевого оборудования или некорректная настройка энергосбережения сетевых карт на стороне клиента.
  5. Блокировка трафика антивирусным ПО или брандмауэром.

Выясним пошагово, как устранить каждую из этих причин.

Решение 1. Полное отключение сетевого протокола IPv6

В большинстве корпоративных сетей адресация по-прежнему строится на протоколе IPv4. Активный протокол IPv6, работающий параллельно, часто вызывает коллизии при разрешении имен хостов (DNS). Платформа 1С может пытаться установить соединение по IPv6, не получать вовремя ответ и аварийно разрывать сессию. Опыт показывает, что отключение IPv6 решает львиную долю сетевых проблем в 1С.

Выполним процедуру отключения протокола на сервере 1С, сервере СУБД и клиентских машинах:

  1. Откроем «Центр управления сетями и общим доступом» через панель управления или выполнив команду ncpa.cpl в окне запуска (Win + R).
  2. Нажмем правой кнопкой мыши на активном сетевом адаптере и выберем пункт «Свойства».
  3. В открывшемся списке компонентов снимем галочку с пункта «IP версии 6 (TCP/IPv6)».
  4. Нажмем кнопку «ОК» для сохранения изменений.

Для полной уверенности рекомендуется отключить IPv6 также на уровне системного реестра Windows. Для этого создадим и применим следующий файл реестра:


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters]
"DisabledComponents"=dword:ffffffff

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

Решение 2. Оптимизация рабочих процессов сервера 1С и лимитов памяти

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

Настроим параметры кластера 1С для предотвращения подобных ситуаций:

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

Также обратим внимание на лимиты памяти СУБД MS SQL Server. По умолчанию SQL Server забирает под свои нужды всю доступную оперативную память сервера. Это приводит к деградации процессов 1С. Ограничим аппетиты СУБД: откроем SQL Server Management Studio (SSMS), зайдем в свойства сервера на вкладку «Память» (Memory) и жестко зададим параметр «Максимальный размер памяти сервера» (Max Server Memory), оставив операционной системе и процессам 1С как минимум 4–8 ГБ свободного объема.

Решение 3. Настройка параметров реестра Windows для сетевой стабильности

Операционная система Windows Server имеет встроенные алгоритмы защиты от сетевых атак, которые при высокой интенсивности обмена данными между 1С и базой данных SQL могут ложно принимать легитимные транзакции за вредоносную активность. Отрегулируем параметры TCP-соединений в реестре.

Откроем редактор реестра regedit и перейдем по пути:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Создадим или отредактируем следующие параметры типа DWORD (32 бита):

Для удобства вы можете импортировать эти настройки с помощью готового конфигурационного файла:


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"KeepAliveTime"=dword:000493e0
"KeepAliveInterval"=dword:000003e8
"SynAttackProtect"=dword:00000000

Решение 4. Использование протокола Shared Memory (Общая память)

В тех случаях, когда сервер приложений 1С и СУБД MS SQL Server физически установлены на одном и том же компьютере (как это часто бывает, когда с базой работает небольшое количество пользователей), мы можем полностью исключить сетевой стек из цепочки обмена данными.

Протокол Shared Memory позволяет процессам 1С и SQL обмениваться информацией напрямую через оперативную память сервера, минуя сетевые адаптеры, сокеты и петлевой интерфейс (localhost). Это не только повышает скорость работы на 10-15%, но и раз и навсегда избавляет от сетевых ошибок класса 10054 на уровне «1С — SQL».

Разберем, как настроить данный протокол по шагам:

  1. Откроем утилиту SQL Server Configuration Manager на сервере базы данных.
  2. Перейдем в раздел SQL Server Network Configuration -> Protocols for MSSQLSERVER (или имя вашего экземпляра).
  3. Убедимся, что протокол Shared Memory находится в статусе Enabled (Включен).
  4. В строке подключения базы данных в кластере 1С перед именем сервера СУБД укажем специальный префикс локального подключения: lpc:ИмяСервера (где lpc расшифровывается как Local Procedure Call).

Решение 5. Отключение энергосбережения и разгрузки сети на сетевой карте

Иногда корень проблемы кроется в аппаратной части клиентского компьютера. Если бухгалтер отлучился на обед или долго изучает распечатанный документ, сетевая карта компьютера может снизить энергопотребление или временно перейти в спящий режим. При попытке возобновить работу сессия в 1С оказывается прерванной сервером по тайм-ауту.

Выполним профилактику сетевого оборудования на клиентской машине:

  1. Откроем «Диспетчер устройств» Windows.
  2. Развернем ветку «Сетевые адаптеры» и дважды кликнем на нашей сетевой плате (например, Intel Ethernet Connection или Realtek PCIe).
  3. Перейдем на вкладку «Управление электропитанием».
  4. Снимем галочку с параметра «Разрешить отключение этого устройства для экономии энергии».
  5. Перейдем на вкладку «Дополнительно» и отключим функции энергосбережения, такие как: Green Ethernet, Energy Efficient Ethernet, а также отключим разгрузку протоколов (IPv4 Checksum Offload, Large Send Offload), переложив эти задачи обратно на центральный процессор для более надежного контроля целостности пакетов.

На стороне сервера также полезно отключить оптимизации разгрузки TCP. Для этого выполним в командной строке (запущенной от имени администратора) следующие директивы:


netsh int ip set global taskoffload=disabled
netsh int tcp set global chimney=disabled
netsh int tcp set global autotuninglevel=disabled

Решение 6. Добавление процессов 1С и SQL в исключения безопасности

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

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

Также рекомендуется добавить в список исключений сканирования каталоги временных файлов пользователей (%userprofile%\AppData\Local\1C и %userprofile%\AppData\Roaming\1C), где хранится кэш метаданных, повреждение которого также может спровоцировать сбой сессии.

Резюме и выводы

Мы детально проанализировали причины возникновения ошибки 10054 при работе в 1С:Бухгалтерии и рассмотрели комплекс методов борьбы с ней. Системный подход к администрированию инфраструктуры 1С — от отключения неиспользуемого протокола IPv6 до тонкой настройки реестра Windows и перевода СУБД на работу через Shared Memory — позволяет полностью локализовать и устранить эти досадные сбои. Применив данные рекомендации, вы обеспечите бесперебойную работу пользователей и надежную сохранность обрабатываемых учетных данных.

← На главную