Как исправить ошибку descr=10054(0x00002746) 'Удаленный хост принудительно разорвал существующее подключение' при работе с конфигуратором 1С 8.3 и MS SQL Server?

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

При работе с конфигуратором 1С:Предприятия 8.3 и использованием MS SQL Server в качестве СУБД, мы можем столкнуться с неприятной ошибкой descr=10054(0x00002746), сопровождающейся сообщениями типа «Удаленный хост принудительно разорвал существующее подключение» или «Передача данных прервана по инициативе принимающей стороны». Эта проблема возникает при попытке загрузить измененную конфигурацию или информационную базу и указывает на разрыв сетевого соединения. Рассмотрим подробнее возможные причины и методы устранения данной ошибки, объединяя опыт коллег с форума и дополнительные рекомендации.

Начинаем с базовой диагностики и быстрых решений

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

  1. Проверка сетевых настроек и разрешение имен (DNS):

    Зачастую ошибка 10054 связана с проблемами в сетевом взаимодействии между клиентом (где запущен конфигуратор), сервером 1С:Предприятия и сервером MS SQL. В нашем случае, мы выяснили, что причиной может быть некорректная работа DNS или проблемы с протоколом IPv6. Мы рекомендуем выполнить следующие шаги:

    • Отключение IPv6: Убедитесь, что протокол IPv6 отключен на сетевых адаптерах сервера, если он не используется или вызывает проблемы совместимости. Админ на форуме пробовал этот шаг, и хотя он не сразу помог, в совокупности с другими мерами он мог сыграть роль.
    • Использование IP-адреса вместо имени сервера: Попробуйте изменить адрес сервера 1С в списке информационных баз с символьного имени на прямой IP-адрес или localhost, если клиент и сервер 1С находятся на одном компьютере. Это помогло автору темы, что указывает на потенциальные проблемы с разрешением имен. Например, вместо SERVER_NAME:1541 используйте 192.168.1.100:1541 или localhost:1541.
  2. Очистка кэша 1С:Предприятия:

    Накопленный кэш может приводить к разнообразным ошибкам, включая проблемы с подключением. Мы должны очистить кэш как на стороне клиента, так и на стороне сервера 1С.

    • Очистка локального кэша клиента:

      На клиентском компьютере (или на сервере RDP, если работаем удаленно) мы можем очистить кэш двумя способами:

      1. В окне запуска 1С:Предприятия выберите проблемную базу, нажмите кнопку «Изменить», затем «Далее», и снимите галочку «Использовать кэш» на последнем шаге. После этого попробуйте запустить базу.
      2. Вручную удалите кэш. Кэш располагается в каталогах типа C:\Users\UserName\AppData\Roaming\1C\1cv8 и C:\Users\UserName\AppData\Local\1C\1cv8. Мы можем просто удалить содержимое этих папок.
    • Очистка кэша на сервере 1С:Предприятия:

      На сервере 1С также существует кэш, который необходимо очистить. Это требует остановки служб 1С и последующей очистки временных файлов. Мы рассмотрим этот процесс более подробно в следующем разделе.

Двигаемся дальше: Диагностика и оптимизация сервера 1С:Предприятия

Если базовые шаги не помогли, нам следует более внимательно изучить работу сервера 1С:Предприятия.

  1. Рестарт процессов rphost и служб сервера 1С:

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

    • Остановка и запуск служб: Мы должны остановить службу «Агент сервера 1С:Предприятия» (например, 1C:Enterprise 8.3 Server Agent (x86-64)) и убедиться, что все процессы rphost.exe, rmngr.exe, ragent.exe завершены через диспетчер задач. Затем мы можем запустить службу снова.
    • Автоматизированная очистка и рестарт: Для более глубокой очистки и перезапуска, мы можем использовать следующий скрипт, который остановит службы, очистит временные файлы и затем запустит их заново. Будьте внимательны и подставьте свои значения для переменных SERVICE_1C_NAME, SERVICE_RAS_NAME, CNTX_PATH, PFL_PATH, TEMP_PATH.
    
    set LOG_FILE="scripts.log"
    set SERVICE_1C_NAME="1C:Enterprise 8.3 Server Agent (x86-64)"
    set SERVICE_RAS_NAME="1C:Enterprise 8.3 Remote Server"
    set CNTX_PATH="C:\Program Files\1cv8\srvinfo\reg_1541"
    set PFL_PATH="C:\ProgramData\1C\1cv8"
    set TEMP_PATH="C:\Windows\Temp"
    
    echo stop %DATE% %TIME% >> %TEMP_PATH%\%LOG_FILE%
    sc stop "%SERVICE_1C_NAME%"
    sc stop "%SERVICE_RAS_NAME%"
    timeout 5
    taskkill /f /im "rphost.exe"
    taskkill /f /im "rmngr.exe"
    taskkill /f /im "ragent.exe"
    taskkill /f /im "ras.exe"
    timeout 5
    echo done stop %DATE% %TIME% >> %TEMP_PATH%\%LOG_FILE%
    
    echo clean temp %DATE% %TIME% >> %TEMP_PATH%\%LOG_FILE%
    DEL /Q /F /S %CNTX_PATH%\snccntx*
    DEL /Q /F %PFL_PATH%\*.pfl
    DEL /Q /F /S %TEMP_PATH%\*.*
    echo done clean temp %DATE% %TIME% >> %TEMP_PATH%\%LOG_FILE%
    
    sc start "%SERVICE_1C_NAME%"
    sc start "%SERVICE_RAS_NAME%"
    echo start %DATE% %TIME% >> %TEMP_PATH%\%LOG_FILE%
    

    Обратите внимание, что путь C:\Program Files\1cv8\srvinfo\reg_1541 (или аналогичный) содержит реестр кластера 1С. Полное удаление этой папки приведет к потере настроек баз в кластере, индексов полнотекстового поиска и журналов регистрации. Однако, как подсказал коллега, для очистки кэша достаточно удалить только содержимое папок, начинающихся с snccntx* внутри reg_1541. Очистка C:\ProgramData\1C\1cv8 и C:\Windows\Temp также является безопасной при остановленных службах 1С.

  2. Анализ нехватки оперативной памяти и размера конфигурации:

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

    • Нехватка ОЗУ: Если сервер 1С или SQL Server испытывает дефицит памяти, это может приводить к разрывам соединений. Регулярные рестарты служб 1С (как описано выше) помогают освободить занятую память. Мы также должны убедиться, что на сервере достаточно физической оперативной памяти.
    • Размер конфигурации: Чрезмерно большая конфигурация (особенно типовые конфигурации с большим количеством неиспользуемых общих макетов) может требовать значительных ресурсов при загрузке. Если это возможно, мы можем рассмотреть «кастрацию» типовой конфигурации путем очистки ненужных общих макетов для уменьшения её размера.
    • 32-битный сервер 1С: Если мы используем 32-битную версию сервера 1С, он не может выделять более 2 ГБ памяти на процесс. Это критически важно при интенсивной работе или с большими конфигурациями. Переход на 64-битную версию сервера 1С может решить эту проблему.
  3. Использование нескольких рабочих процессов rphost:

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

Глубокая оптимизация: Настройки MS SQL Server и операционной системы

Поскольку 1С:Предприятие тесно взаимодействует с MS SQL Server, многие проблемы с подключением могут быть вызваны некорректными настройками СУБД или операционной системы, на которой она работает. Рассмотрим комплекс мер, которые помогут нам улучшить стабильность и производительность.

  1. Настройки сетевых протоколов MS SQL Server:

    Если сервер 1С:Предприятия и MS SQL Server расположены на одном физическом сервере, мы можем оптимизировать их взаимодействие:

    • Включение Shared Memory: Мы рекомендуем включить протокол Shared Memory (общая память) в конфигурации SQL Server. Этот протокол обеспечивает максимально быструю связь между процессами на одном и том же компьютере.
    • Отключение Named Pipes: Для этой же ситуации, мы можем отключить протокол Named Pipes, поскольку Shared Memory будет предпочтительнее.

    Мы должны найти эти настройки в SQL Server Configuration Manager в разделе SQL Server Network Configuration -> Protocols for MSSQLSERVER.

  2. Оптимизация производительности и распараллеливания запросов MS SQL:

    Некорректные настройки распараллеливания запросов могут привести к высокой нагрузке на процессор, ожиданиям типа CXPACKET и разрывам соединений.

    • Параметр Max degree of parallelism (MAXDOP): По умолчанию этот параметр может быть установлен в 0, что позволяет SQL Server использовать все доступные ядра для распараллеливания запросов. Однако для баз данных 1С, которые часто выполняют множество мелких транзакций, такое поведение может быть контрпродуктивным. Мы рекомендуем установить MAXDOP в значение 1. Это гарантирует, что каждый запрос будет выполняться в одном потоке, что часто более эффективно для типовой нагрузки 1С и снижает накладные расходы на координацию параллельных потоков. Мы можем изменить это через SQL Server Management Studio (SSMS) в свойствах сервера или с помощью SQL-запроса:
    • 
      EXEC sp_configure 'show advanced options', 1;
      RECONFIGURE;
      EXEC sp_configure 'max degree of parallelism', 1;
      RECONFIGURE;
      
    • Cost Threshold for Parallelism: Мы также можем рассмотреть увеличение значения параметра Cost Threshold for Parallelism. Этот параметр определяет "стоимость" запроса, при превышении которой SQL Server будет пытаться распараллелить его. Увеличив его (например, до 50 или 70), мы можем уменьшить количество запросов, которые SQL Server пытается распараллелить, оставив только действительно ресурсоемкие операции.
  3. Оптимизация дисковой подсистемы:

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

    • Размер кластера 64 КБ: При форматировании дисков, используемых для хранения файлов базы данных SQL Server, мы рекомендуем выбирать размер кластера 64 КБ. Это оптимальный размер для большинства рабочих нагрузок SQL Server.
    • Database Instant File Initialization: Мы должны включить эту опцию. Она позволяет SQL Server быстрее создавать и увеличивать файлы данных, поскольку операционная система не обнуляет пространство на диске перед использованием. Для этого пользователю, от имени которого запущена служба MS SQL Server, необходимо предоставить разрешение Perform volume maintenance tasks в групповых политиках безопасности (gpedit.msc -> Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> User Rights Assignment).
    • Раздельное размещение файлов данных и журналов транзакций: Мы настоятельно рекомендуем размещать файлы данных (.mdf, .ndf) и файлы журналов транзакций (.ldf) на разных физических дисковых массивах (желательно на разных RAID-массивах). Файлы журналов транзакций требуют очень быстрой последовательной записи, и их размещение на отдельном, оптимизированном для записи диске значительно повысит производительность.
    • Отсутствие сжатия файлов: Убедитесь, что на дисках, где расположены файлы базы данных и журналов, отключено сжатие файлов. Сжатие на уровне файловой системы приводит к дополнительным накладным расходам на чтение/запись и замедляет работу СУБД.
  4. Настройки управления питанием Windows:

    В операционной системе Windows для сервера, на котором установлены 1С и SQL Server, мы должны установить схему управления питанием «Высокая производительность». Это предотвратит замедление работы процессора и других компонентов системы из-за экономии энергии.

  5. Отключение ненужных служб SQL Server:

    Для оптимизации работы и освобождения ресурсов мы можем остановить и отключить службы SQL Server, которые не используются 1С. Например:

    • SQL Server FullText Search: 1С имеет собственный механизм полнотекстового поиска, поэтому эта служба SQL Server, как правило, не нужна.
    • SQL Server Integration Services, Reporting Services, Analysis Services: Если эти службы не используются явно для других целей на этом же сервере, мы можем их отключить.
  6. Разрешение Lock pages in memory:

    Мы рекомендуем установить для пользователя, от имени которого запущена служба MS SQL Server, разрешение Lock pages in memory (блокировка страниц в памяти). Это предотвратит выгрузку страниц памяти, занятых SQL Server, в файл подкачки, что особенно полезно для предотвращения задержек и повышения производительности, особенно когда SQL Server и сервер 1С:Предприятия установлены на разных серверах (или даже на одном, но активно конкурируют за память).

  7. Исключения для антивирусов и систем резервного копирования:

    Мы должны добавить файлы базы данных (.mdf, .ndf) и журнала транзакций (.ldf) в исключения всех антивирусных программ и систем автоматического резервного копирования (таких как Volume Shadow Copy Service). Это предотвратит конфликты, блокировки файлов и снижение производительности, которые могут быть вызваны сканированием или попыткой резервирования во время активной работы СУБД.

  8. Обновления платформы 1С и SQL Server:

    Убедитесь, что используются актуальные версии платформы 1С:Предприятие и MS SQL Server, включая последние Service Pack и Cumulative Updates. Иногда ошибка 10054 может возникать после обновления одной из компонент, если не были учтены изменения в протоколах взаимодействия или требованиях к среде. Мы должны всегда следить за совместимостью версий.

  9. Настройка временной базы данных (tempdb):

    База данных tempdb используется SQL Server для временных объектов, сортировок и промежуточных результатов. Её производительность критична. Мы рекомендуем:

    • Выделение tempdb на отдельный диск: По возможности, разместите файлы tempdb на отдельном, высокопроизводительном дисковом массиве.
    • Достаточное количество файлов tempdb: Мы должны создать несколько файлов для tempdb (обычно от 1 до 8, по одному на каждое ядро процессора, но не более 8-ми, чтобы избежать чрезмерных блокировок). Это поможет равномерно распределить нагрузку на дисковую подсистему и избежать узких мест при одновременном доступе. Размер каждого файла должен быть одинаковым, чтобы SQL Server равномерно распределял операции между ними.
  10. Флаги трассировки SQL Server:

    В некоторых случаях для диагностики специфических проблем могут быть полезны флаги трассировки SQL Server. Это продвинутый инструмент, который следует использовать с осторожностью и под руководством опытного администратора баз данных. Например, флаги T1117 и T1118 часто рекомендуются для tempdb, но их применение зависит от версии SQL Server и конкретной ситуации.

  11. Отключение Dynamic Fair Share Scheduling (DFSS):

    Механизм Dynamic Fair Share Scheduling в Windows Server, отвечающий за балансировку аппаратных ресурсов между виртуальными машинами или процессами, иногда может негативно влиять на производительность 1С, особенно в виртуализированных средах. Мы можем рассмотреть возможность его отключения для дисков, изменив значение параметра EnableFairShare в реестре. Однако это решение должно применяться с осторожностью и пониманием возможных последствий для других рабочих нагрузок на сервере.

Использование Технологического журнала 1С для глубокого анализа

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

Мы можем настроить Технологический журнал, указав, какие события и в каких компонентах следует логировать. Анализ записей журнала поможет нам точно определить момент и причину разрыва соединения, будь то нехватка памяти, таймаут ожидания от SQL Server или другая системная ошибка. Для такой задачи подойдёт обработка для настройки и расшифровки технологического журнала 1С.

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

← На главную