Почему служба сервера 1С останавливается сразу после запуска и как это исправить?

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

Сталкивались ли вы с ситуацией, когда служба «Агент сервера 1С:Предприятия» запускается и через несколько секунд самопроизвольно останавливается? В журнале событий Windows при этом обычно фиксируется лишь общее сообщение о неожиданном прерывании службы, что не дает никакой конкретики. Это распространенная и неприятная проблема, которая может парализовать работу пользователей. Давайте вместе разберемся в ее причинах и рассмотрим пошаговые алгоритмы решения.

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

Причина №1: Конфликт сетевых портов

Это наиболее вероятная причина внезапной остановки службы. Сервер 1С для своей работы использует определенные TCP-порты по умолчанию:

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

Почему системные службы Windows могут занимать порты 1С? Дело в том, что эти порты входят в стандартный динамический диапазон портов, который Windows может назначать своим службам (например, lsass.exe — служба безопасности или spoolsv.exe — диспетчер печати) для исходящих подключений. После перезагрузки сервера может случиться так, что система "отдаст" порт 1540 или 1541 одной из своих служб до того, как его попытается занять агент 1С.

Разберем по шагам, как диагностировать и решить эту проблему.

  1. Убедимся, что порты заняты.

    Откроем командную строку (cmd) от имени администратора и выполним команду, которая покажет все активные TCP-подключения, их порты и идентификаторы процессов (PID), которые их используют:

    netstat -ano -p tcp

    Внимательно изучим вывод. Нас интересуют строки, где в столбце "Локальный адрес" указаны наши порты, например, 0.0.0.0:1540 или [::]:1541. Если такие строки есть, посмотрим на значение в последнем столбце "PID". Это идентификатор процесса, который занял порт. Запомним его.

    Теперь откроем "Диспетчер задач", перейдем на вкладку "Подробности" и найдем процесс с этим PID. Так мы точно определим "виновника", будь то системная служба или сторонняя программа (например, Handy Backup, Hyper-V, служба удаленного доступа).

  2. Проверим динамический диапазон портов Windows.

    Чтобы понять, входят ли порты 1С в диапазон, который система может использовать для своих нужд, выполним в командной строке от имени администратора:

    netsh int ipv4 show dynamicport tcp

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

  3. Исключим порты 1С из динамического диапазона (рекомендуемое решение).

    Самый правильный способ — "сказать" Windows не использовать порты, зарезервированные для 1С. Для этого мы сместим начало динамического диапазона выше, чем порты 1С. Например, начнем его с порта 2000. Таким образом мы освободим все порты ниже для статического назначения. Выполним команду:

    netsh int ipv4 set dynamicport tcp start=2000 num=63535

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

  4. Сменим порты сервера 1С (альтернативное решение).

    Если изменять системные настройки по какой-то причине нельзя, можно пойти другим путем — заставить сам сервер 1С использовать другие порты. Этот способ помог автору в исходной теме. Для этого нужно отредактировать строку запуска службы "Агент сервера 1С:Предприятия 8.3".

    • Откройте редактор реестра (regedit).
    • Перейдите к ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.
    • Найдите службу вашего агента сервера (имя может содержать версию, например, 1C:Enterprise 8.3 Server Agent).
    • Найдите параметр ImagePath и измените его, добавив ключи для указания новых портов. Например, сместим все на 1000 вверх:

    Исходная строка:

    
    "C:\Program Files (x86)\1cv8\8.3.10.2505\bin\ragent.exe" -srvc -agent -debug -http
    

    Измененная строка:

    
    "C:\Program Files (x86)\1cv8\8.3.10.2505\bin\ragent.exe" -srvc -agent -debug -http -regport 2541 -port 2540 -range 2560:2591
    

    После изменения реестра попробуйте запустить службу. Не забудьте, что при подключении к такому серверу в консоли администрирования или в строке подключения клиентского приложения нужно будет указывать новый порт кластера (в нашем примере 2541).

Причина №2: Повреждение или некорректное содержимое папки `srvinfo`

В каталоге srvinfo (обычно находится в C:\Program Files\1cv8\srvinfo или C:\Program Files (x86)\1cv8\srvinfo) сервер 1С хранит всю информацию о кластерах, рабочих серверах и зарегистрированных информационных базах. Повреждение файлов в этом каталоге — вторая по популярности причина сбоя запуска службы. Для анализа и очистки файлов этого каталога можно использовать инструмент для анализа и очистки каталога srvinfo.

Когда это может произойти?

Что делать в этом случае?

  1. Полная очистка каталога srvinfo.

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

    • Остановите службу агента сервера 1С (если она запущена).
    • Полностью очистите содержимое папки srvinfo (удалите все файлы и подпапки).
    • Запустите службу агента сервера 1С. Она должна успешно запуститься и пересоздать структуру каталога.
    • Откройте консоль администрирования, создайте новый кластер и заново добавьте все информационные базы.
  2. Восстановление из резервной копии.

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

  3. Ручное исправление имени сервера.

    Если проблема возникла после смены имени компьютера, можно попробовать исправить его вручную. Зайдите в папку srvinfo\reg_1541 (цифры могут отличаться, если у вас нестандартный порт), найдите там файлы с расширением .lst и откройте их текстовым редактором. Замените старое имя сервера на новое во всех файлах.

Причина №3: Проблемы с лицензированием и ключами защиты

Иногда служба не может запуститься из-за того, что не находит действующую серверную лицензию.

Прочие возможные причины

Если ничего из вышеперечисленного не помогло, стоит проверить еще несколько моментов:

Систематическая проверка этих пунктов в большинстве случаев позволяет быстро выявить и устранить причину самопроизвольной остановки службы сервера 1С.

← На главную