При работе с конфигуратором 1С:Предприятия 8.3 и использованием MS SQL Server в качестве СУБД, мы можем столкнуться с неприятной ошибкой descr=10054(0x00002746), сопровождающейся сообщениями типа «Удаленный хост принудительно разорвал существующее подключение» или «Передача данных прервана по инициативе принимающей стороны». Эта проблема возникает при попытке загрузить измененную конфигурацию или информационную базу и указывает на разрыв сетевого соединения. Рассмотрим подробнее возможные причины и методы устранения данной ошибки, объединяя опыт коллег с форума и дополнительные рекомендации.
Прежде всего, когда мы сталкиваемся с разрывом соединения, нам следует проверить наиболее очевидные причины, связанные с сетью и кэшем 1С.
Зачастую ошибка 10054 связана с проблемами в сетевом взаимодействии между клиентом (где запущен конфигуратор), сервером 1С:Предприятия и сервером MS SQL. В нашем случае, мы выяснили, что причиной может быть некорректная работа DNS или проблемы с протоколом IPv6. Мы рекомендуем выполнить следующие шаги:
localhost, если клиент и сервер 1С находятся на одном компьютере. Это помогло автору темы, что указывает на потенциальные проблемы с разрешением имен. Например, вместо SERVER_NAME:1541 используйте 192.168.1.100:1541 или localhost:1541.Накопленный кэш может приводить к разнообразным ошибкам, включая проблемы с подключением. Мы должны очистить кэш как на стороне клиента, так и на стороне сервера 1С.
На клиентском компьютере (или на сервере RDP, если работаем удаленно) мы можем очистить кэш двумя способами:
C:\Users\UserName\AppData\Roaming\1C\1cv8 и C:\Users\UserName\AppData\Local\1C\1cv8. Мы можем просто удалить содержимое этих папок.На сервере 1С также существует кэш, который необходимо очистить. Это требует остановки служб 1С и последующей очистки временных файлов. Мы рассмотрим этот процесс более подробно в следующем разделе.
Если базовые шаги не помогли, нам следует более внимательно изучить работу сервера 1С:Предприятия.
rphost и служб сервера 1С:
Даже если мы работаем в конфигураторе, ошибка 10054 может быть вызвана нестабильной работой или падением рабочих процессов rphost. Перезапуск служб сервера 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С.
Известный эксперт Илья Гилев неоднократно указывал, что ошибка 10054 часто связана с нехваткой оперативной памяти и большим размером конфигурационного файла (.cf). Это актуально не только для работы в режиме «Предприятия», но и для конфигуратора, особенно при загрузке больших конфигураций.
rphost:
Наличие нескольких рабочих процессов rphost на сервере 1С:Предприятия повышает стабильность системы. Если один из процессов падает, пользователи могут быть автоматически переподключены к другому рабочему процессу, что снижает вероятность разрыва соединения для всех. Мы можем настроить это в консоли администрирования кластера 1С.
Поскольку 1С:Предприятие тесно взаимодействует с MS SQL Server, многие проблемы с подключением могут быть вызваны некорректными настройками СУБД или операционной системы, на которой она работает. Рассмотрим комплекс мер, которые помогут нам улучшить стабильность и производительность.
Если сервер 1С:Предприятия и MS SQL Server расположены на одном физическом сервере, мы можем оптимизировать их взаимодействие:
Shared Memory (общая память) в конфигурации SQL Server. Этот протокол обеспечивает максимально быструю связь между процессами на одном и том же компьютере.Named Pipes, поскольку Shared Memory будет предпочтительнее.Мы должны найти эти настройки в SQL Server Configuration Manager в разделе SQL Server Network Configuration -> Protocols for MSSQLSERVER.
Некорректные настройки распараллеливания запросов могут привести к высокой нагрузке на процессор, ожиданиям типа 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. Этот параметр определяет "стоимость" запроса, при превышении которой SQL Server будет пытаться распараллелить его. Увеличив его (например, до 50 или 70), мы можем уменьшить количество запросов, которые 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-массивах). Файлы журналов транзакций требуют очень быстрой последовательной записи, и их размещение на отдельном, оптимизированном для записи диске значительно повысит производительность.В операционной системе Windows для сервера, на котором установлены 1С и SQL Server, мы должны установить схему управления питанием «Высокая производительность». Это предотвратит замедление работы процессора и других компонентов системы из-за экономии энергии.
Для оптимизации работы и освобождения ресурсов мы можем остановить и отключить службы SQL Server, которые не используются 1С. Например:
SQL Server FullText Search: 1С имеет собственный механизм полнотекстового поиска, поэтому эта служба SQL Server, как правило, не нужна.SQL Server Integration Services, Reporting Services, Analysis Services: Если эти службы не используются явно для других целей на этом же сервере, мы можем их отключить.Lock pages in memory:
Мы рекомендуем установить для пользователя, от имени которого запущена служба MS SQL Server, разрешение Lock pages in memory (блокировка страниц в памяти). Это предотвратит выгрузку страниц памяти, занятых SQL Server, в файл подкачки, что особенно полезно для предотвращения задержек и повышения производительности, особенно когда SQL Server и сервер 1С:Предприятия установлены на разных серверах (или даже на одном, но активно конкурируют за память).
Мы должны добавить файлы базы данных (.mdf, .ndf) и журнала транзакций (.ldf) в исключения всех антивирусных программ и систем автоматического резервного копирования (таких как Volume Shadow Copy Service). Это предотвратит конфликты, блокировки файлов и снижение производительности, которые могут быть вызваны сканированием или попыткой резервирования во время активной работы СУБД.
Убедитесь, что используются актуальные версии платформы 1С:Предприятие и MS SQL Server, включая последние Service Pack и Cumulative Updates. Иногда ошибка 10054 может возникать после обновления одной из компонент, если не были учтены изменения в протоколах взаимодействия или требованиях к среде. Мы должны всегда следить за совместимостью версий.
tempdb):
База данных tempdb используется SQL Server для временных объектов, сортировок и промежуточных результатов. Её производительность критична. Мы рекомендуем:
tempdb на отдельный диск: По возможности, разместите файлы tempdb на отдельном, высокопроизводительном дисковом массиве.tempdb: Мы должны создать несколько файлов для tempdb (обычно от 1 до 8, по одному на каждое ядро процессора, но не более 8-ми, чтобы избежать чрезмерных блокировок). Это поможет равномерно распределить нагрузку на дисковую подсистему и избежать узких мест при одновременном доступе. Размер каждого файла должен быть одинаковым, чтобы SQL Server равномерно распределял операции между ними.В некоторых случаях для диагностики специфических проблем могут быть полезны флаги трассировки SQL Server. Это продвинутый инструмент, который следует использовать с осторожностью и под руководством опытного администратора баз данных. Например, флаги T1117 и T1118 часто рекомендуются для tempdb, но их применение зависит от версии SQL Server и конкретной ситуации.
Dynamic Fair Share Scheduling (DFSS):
Механизм Dynamic Fair Share Scheduling в Windows Server, отвечающий за балансировку аппаратных ресурсов между виртуальными машинами или процессами, иногда может негативно влиять на производительность 1С, особенно в виртуализированных средах. Мы можем рассмотреть возможность его отключения для дисков, изменив значение параметра EnableFairShare в реестре. Однако это решение должно применяться с осторожностью и пониманием возможных последствий для других рабочих нагрузок на сервере.
Для более детального анализа причин ошибки 10054 и других проблем с сервером 1С:Предприятия мы настоятельно рекомендуем настроить и использовать Технологический журнал 1С. Он позволяет фиксировать различные события, происходящие на сервере, включая падения рабочих процессов rphost, ошибки взаимодействия с СУБД, проблемы с памятью и многое другое.
Мы можем настроить Технологический журнал, указав, какие события и в каких компонентах следует логировать. Анализ записей журнала поможет нам точно определить момент и причину разрыва соединения, будь то нехватка памяти, таймаут ожидания от SQL Server или другая системная ошибка. Для такой задачи подойдёт обработка для настройки и расшифровки технологического журнала 1С.
В заключение, ошибка descr=10054 при работе с конфигуратором 1С и MS SQL Server является комплексной проблемой, которая может быть вызвана разнообразными факторами — от простых сетевых настроек до глубоких проблем с производительностью СУБД или недостатком ресурсов. Систематический подход к диагностике, начиная с самых очевидных причин и постепенно углубляясь в настройки сервера 1С и SQL Server, поможет нам эффективно выявить и устранить корень проблемы, обеспечивая стабильную работу нашей информационной системы.