Аварийное отключение электропитания сервера — один из самых неприятных сценариев для системного администратора. Последствия внезапного отключения могут проявиться не сразу, а лишь после перезагрузки операционной системы и проведения автоматической проверки целостности дисков утилитой chkdsk. Одной из наиболее распространенных проблем в такой ситуации является внезапный отказ в работе сервера приложений 1С:Предприятие 8.3.
В данной статье мы подробно проанализируем ситуацию, когда служба агента сервера 1С (64-разрядная версия) успешно запускается в консоли служб Windows, однако при любой попытке пользователя или консоли администрирования подключиться к серверу, служба мгновенно завершает свою работу (падает). При этом клиент получает характерную ошибку соединения: descr=[::1]:1540:10061(0x0000274D):No connection could be made because the target machine actively refused it. Мы выясним, почему в этой ситуации 32-разрядный сервер работает без нареканий, детально разберем внутренние механизмы взаимодействия процессов 1С и рассмотрим пошаговые методы устранения этой неисправности.
Первое, что вызывает недоумение у многих специалистов — это ситуация, когда после удаления поврежденной 64-разрядной версии сервера и установки 32-разрядной версии система начинает функционировать абсолютно нормально. Повторная же установка 64-разрядной платформы снова приводит к падению службы. Разберем эту загадку подробнее.
Секрет кроется в архитектурной изоляции каталогов служебных файлов (данных кластера) для платформ различной разрядности. По умолчанию сервер 1С хранит настройки кластера, список зарегистрированных информационных баз, сеансовые данные и кэш в следующих каталогах:
C:\Program Files\1cv8\srvinfoC:\Program Files (x86)\1cv8\srvinfoПри аварийном отключении питания файлы конфигурации кластера, находившиеся в этот момент в процессе записи, повреждаются. Когда операционная система Windows выполняет проверку файловой системы NTFS при загрузке, она пытается исправить поврежденные сектора. В результате файлы настроек в каталоге 64-разрядной версии (C:\Program Files\1cv8\srvinfo) оказываются либо усеченными до нулевого размера, либо заполняются некорректными бинарными данными.
Когда мы устанавливаем 32-разрядный сервер приложений, он обращается к абсолютно другому пути — C:\Program Files (x86)\1cv8\srvinfo. Данный каталог либо отсутствовал, либо не содержал поврежденных файлов. Соответственно, 32-битная служба создает чистую структуру настроек «с нуля» и успешно работает. При попытке вернуться на 64-разрядную версию, сервер вновь обращается к своей старой «битой» папке в Program Files, считывает поврежденные файлы конфигурации и аварийно завершает работу.
Проанализируем сетевую ошибку, которую видит пользователь: descr=[::1]:1540:10061... No connection could be made because the target machine actively refused it.
Символ [::1] представляет собой IPv6-адрес локальной петли (loopback), эквивалентный адресу 127.0.0.1 в сетях IPv4. Порт 1540 — это стандартный порт агента сервера 1С (ragent.exe). Код ошибки socket-соединения 10061 (WSAECONNREFUSED) однозначно указывает на то, что сетевой порт закрыт или целевой хост активно отвергает подключение.
Как это происходит на уровне процессов?
ragent.exe. На данном этапе процесс успешно стартует и начинает слушать порт 1540.ragent.exe считывает конфигурационные файлы кластера из папки srvinfo, чтобы определить параметры рабочих процессов и инициализировать менеджер кластера rmngr.exe.1cv8wsrv.lst или 1CV8Clst.lst) повреждены или содержат неконсистентные данные, процесс rmngr.exe (или рабочий процесс rphost.exe) падает сразу после запуска или вообще не может инициализироваться.ragent.exe переходит в аварийный режим, завершает свою работу и закрывает порт 1540.Рассмотрим подробнее несколько практических вариантов восстановления работоспособности 64-разрядного сервера 1С в зависимости от степени повреждения данных кластера.
Часто повреждению подвергаются не сами настройки списка баз, а временные файлы активных сеансов, которые хранятся в подкаталогах кластера. Мы можем попробовать удалить их, сохранив при этом все зарегистрированные базы данных.
services.msc), найдем службу «Агент сервера 1С:Предприятия 8.3 (x86-64)» и нажмем «Остановить».ragent.exe, rmngr.exe и rphost.exe. Если они присутствуют, завершим их принудительно.C:\Program Files\1cv8\srvinfo.reg_1541 (номер порта может отличаться в вашей системе).snccntx (это каталог кэша данных сеансов) и полностью удалим её.*.tmp в каталоге reg_1541.1cv8wsrv.lst и 1CV8Clst.lst, так как именно в них содержится список ваших информационных баз и параметры их подключения к SQL-серверу.Если предыдущий вариант не помог, значит, повреждены сами файлы описания кластера. В этом случае лучшим решением будет полное пересоздание структуры кластера. Обратите внимание, что базы данных, размещенные на MS SQL Server или PostgreSQL, при этом абсолютно не пострадают — мы лишь сбросим настройки их регистрации в кластере 1С.
C:\Program Files\1cv8\.srvinfo, например, в srvinfo_old. Это позволит нам сохранить резервную копию старых настроек, из которой в дальнейшем можно будет подсмотреть параметры подключения к базам.srvinfo и автоматически создаст новую чистую структуру папок и файлов конфигурации по умолчанию. При этом служба запустится без каких-либо ошибок.Работа утилиты chkdsk по исправлению ошибок файловой системы часто сопровождается сбросом или повреждением списков контроля доступа (ACL) к файлам и папкам. Если служба 1С не имеет прав на запись в свою же служебную директорию, она не сможет инициализировать файлы блокировок и упадет при первом же клиентском запросе.
USR1CV8. Это можно проверить в свойствах службы на вкладке «Вход в систему».C:\Program Files\1cv8\srvinfo.USR1CV8 (или другого пользователя, от имени которого работает служба) в списке разрешений.srvinfo.Иногда сбой сетевого стека Windows приводит к тому, что сокеты IPv6 начинают работать некорректно, вызывая ошибку [::1]:1540. Простое снятие галочки «Протокол интернета версии 6 (TCP/IPv6)» в свойствах сетевого адаптера не отключает IPv6 для локального адреса loopback (localhost) в ядре ОС. Для полного отключения IPv6 проделаем следующие шаги:
Win + R, введя команду regedit и нажав Enter.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters
DWORD (32 бита) с именем DisabledComponents. Если его нет, создадим его вручную (Правый клик -> Создать -> Параметр DWORD (32 бита)).DisabledComponents, выберем шестнадцатеричную систему исчисления (Hexadecimal) и установим значение равным ffffffff (восемь символов f). Пример импортируемого REG-файла представлен ниже:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters]
"DisabledComponents"=dword:ffffffff
После перезагрузки операционная система Windows Server будет полностью использовать исключительно протокол IPv4, что исключит любые сетевые конфликты, связанные с адресацией IPv6 на локальном хосте.
Мы детально разобрали причины, по которым 64-разрядный агент сервера приложений 1С падает при подключении клиентов после некорректного выключения сервера. Наиболее эффективным решением в большинстве случаев является полное пересоздание структуры кластера (Вариант Б) или очистка сеансовых данных (Вариант А).
Чтобы минимизировать риски возникновения подобных инцидентов в будущем, мы рекомендуем придерживаться следующих правил:
srvinfo). Наличие актуальной резервной копии этой папки позволит восстановить список сотен баз в кластере за считанные секунды без необходимости их ручного добавления в случае сбоя.