Перезапуск веб-сервера 1С Предприятие: IIS, Apache, Linux

· 9 мин

Содержание

Веб-клиент завис, база по ссылке отвечает «503» или пользователи сидят на белом экране. Быстрее всего помогает перезапуск веб-сервера: в Windows это служба IIS или пул приложений, в Linux — служба apache2 или httpd. Саму службу сервера 1С при этом трогать обычно не нужно.

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

Что именно у вас запущено: определяем веб-сервер и схему публикации

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

  • 🌐 Веб-сервер (IIS или Apache) — принимает HTTP-запросы и отдаёт страницы.
  • 🧩 Веб-расширение 1С — модуль, который подключён к веб-серверу и передаёт запросы дальше. На IIS это обработчик в настройках сайта, на Apache — подключённая библиотека в конфигурации.
  • 🗄 Сервер 1С:Предприятия — служба «Агент сервера 1С:Предприятия 8.3» и рабочие процессы. К веб-серверу не относится.

Если веб-сервер упал, но база в толстом клиенте открывается, значит, виноват именно он. Если не открывается и толстый клиент, перезапуск веб-сервера ничего не даст — смотрите сервер 1С.

Как узнать, IIS это или Apache

На Windows-сервере откройте services.msc и найдите службы:

  • «Служба публикации в Интернете» (в списке встречается как W3SVC) — это IIS;
  • «Apache2.4» или похожее имя — Apache.

Не уверены — зайдите в каталог, куда опубликована база. В нём лежит файл default.vrd с описанием публикации. Рядом с ним на IIS обычно есть web.config, а на Apache в конфигурацию веб-сервера добавлен блок с путём к этому каталогу.

Что проверить до перезапуска

Перезапуск обрывает активные HTTP-сессии. Пользователи веб-клиента и мобильного приложения потеряют несохранённые данные. Проверьте три вещи:

  1. Кто сейчас подключён: консоль администрирования серверов 1С, список сеансов.
  2. Нет ли длительных регламентных заданий, которые идут через веб-сервис.
  3. Свободное место на системном диске: забитый диск ломает и IIS, и Apache, и перезапуск тут не лечит.

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

Перезапуск через оснастку IIS: быстрый способ мышкой

Подходит, если сервер под рукой и команд вы не любите.

Перезапуск всего сайта и сервера

  1. Откройте «Диспетчер служб IIS» (поиск по меню «Пуск» — IIS).
  2. В левой панели выделите имя сервера (верхний узел дерева).
  3. В правой панели «Действия» нажмите «Перезапустить».

Это полный перезапуск всех сайтов на сервере. Если на машине кроме 1С живут другие сайты, они тоже на секунды пропадут.

Перезапуск только пула приложений

Мягче и обычно достаточно:

  1. В дереве откройте узел «Пулы приложений».
  2. Найдите пул, в котором работает публикация 1С. Имя пула часто совпадает с именем сайта или называется DefaultAppPool.
  3. Выделите его и нажмите «Остановить», дождитесь статуса «Остановлено», затем «Запустить».
  4. Если нужна «перезагрузка рабочего процесса» без остановки, используйте пункт «Утилизация» (в английской версии — Recycle).

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

Смотрите на счётчик «Рабочие процессы» в оснастке: если у пула висит процесс w3wp.exe с огромным потреблением памяти и без отклика, остановка с запуском будет надёжнее утилизации.

Перезапуск сайта без трогания пула

Узел «Сайты» → ваш сайт → в «Действиях» кнопки «Остановить» и «Запустить». Эта операция полезна, когда проблема в привязках или в сертификате, а не в процессе.

Командная строка и PowerShell: перезапуск службами и скриптами

Консоль нужна, когда зайти по RDP сложно или перезапуск надо повторять. Все команды запускайте от имени администратора.

Классический iisreset

iisreset /restart

Команда останавливает и запускает всю службу IIS. Если хотите только проверить состояние, выполните iisreset /status.

Если сервер не успевает завершиться штатно, команда с ключом /timeout:60 ждёт указанное число секунд:

iisreset /restart /timeout:60

Через службы Windows

net stop w3svc
net start w3svc

Так проще разделить остановку и запуск: между ними можно выполнить очистку временных файлов или проверку.

PowerShell: пул, сайт, служба

Служба целиком:

Restart-Service W3SVC -Force

Пул приложений и сайт (нужен модуль WebAdministration):

Import-Module WebAdministration
Restart-WebAppPool -Name "DefaultAppPool"
Stop-Website -Name "Default Web Site"
Start-Website -Name "Default Web Site"

Подставьте свои имена. Список имён посмотрите так: Get-WebAppPoolState и Get-Website.

Сводка способов

СпособЧто затрагиваетКогда выбиратьРиск
Утилизация пулаОдин рабочий процессРост памяти, медленный откликМинимальный
Остановка и запуск пулаВсе публикации в пулеПроцесс зависОбрыв сессий пула
Перезапуск сайтаОдин сайтПроблема с привязкой или сертификатомОбрыв сессий сайта
iisresetВесь IIS на сервереНичего другое не помоглоНедоступны все сайты

Apache на Windows и Linux: перезапуск и перечитывание конфигурации

Apache удобно перезапускать не только «целиком»: он умеет перечитать конфигурацию без обрыва соединений.

Windows

Через службы: services.msc → служба Apache → «Перезапустить». Из консоли имя службы нужно знать точно:

net stop Apache2.4
net start Apache2.4

Проверьте реальное имя в списке служб, оно может отличаться.

Linux

Команды зависят от дистрибутива. В Debian и Ubuntu служба называется apache2, в семействе Red Hat — httpd.

sudo systemctl restart apache2
sudo systemctl status apache2

Для Red Hat-подобных систем:

sudo systemctl restart httpd

Мягкий вариант без обрыва активных запросов:

sudo systemctl reload apache2

reload перечитывает конфигурацию, но рабочие процессы с зависшим запросом не убивает. Для зависания нужен именно restart.

Проверка конфигурации до перезапуска

Если вы правили файл публикации вручную, сначала проверьте синтаксис, иначе Apache просто не поднимется:

sudo apachectl configtest

Ответ Syntax OK означает, что можно перезапускать. В остальных случаях команда покажет строку с ошибкой.

Если после правок службе не хватает прав на каталог публикации, Apache стартует, а база отдаёт ошибку 500. Проверьте владельца каталога с default.vrd и права чтения у пользователя, под которым работает веб-сервер.

Перепубликация вместо перезапуска

Иногда зависание вызвано не процессом, а устаревшей публикацией после обновления платформы. Тогда достаточно заново выполнить публикацию через Конфигуратор: «Администрирование» → «Публикация на веб-сервере». Там выбираются имя, каталог и веб-сервер. После публикации веб-сервер обычно просит перезапуск, и его нужно сделать.

Что проверить после перезапуска: признаки живого сервера

Служба в статусе «Работает» ещё не гарантирует, что 1С отвечает. Проверяйте по порядку:

  1. Откройте в браузере адрес базы с локального сервера, например http://localhost/имя_базы. Если локально открывается, а снаружи нет, смотрите файрволл и привязки.
  2. Для HTTP-сервисов откройте их адрес в браузере: должен прийти ответ, а не ошибка шлюза.
  3. Зайдите под своей учётной записью и откройте любой справочник: так вы убедитесь, что связь с сервером 1С работает.

Таблица кодов ответа

Диагностика: выберите симптом

Если после перезапуска проблема осталась

Не перезапускайте веб-сервер в третий раз подряд, это не поможет. Двигайтесь от простого к сложному:

  • 🔍 Журнал событий. В «Просмотре событий» Windows откройте журнал «Приложение» и «Система», найдите записи в момент сбоя. Для IIS полезны логи запросов с кодами ответа.
  • 🔍 Журнал регистрации 1С. Если запрос дошёл до базы, ошибка будет там.
  • 🔍 Лог Apache. В Linux это error.log в каталоге журналов Apache. Он показывает, какую библиотеку или файл сервер не смог загрузить.
  • 🔍 Версия платформы. После обновления платформы публикацию нужно пересоздавать: веб-расширение привязано к конкретной версии.
  • 🔍 Служба сервера 1С. Если сервер 1С завис, перезапуск веб-сервера бесполезен. Перезапускайте «Агент сервера 1С:Предприятия 8.3», предупредив пользователей.

Альтернатива перезапуску всего сервера

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

Заведите отдельный пул приложений под каждую публикацию 1С, особенно под разные версии платформы. Тогда один зависший пул не потянет за собой остальные, и «перезапуск» превращается в точечную операцию.

Автоматизация: перезапуск по расписанию и контроль зависаний

Регулярный перезапуск по ночам скрывает проблему, но и спасает, пока вы её ищете. Делайте его осознанно.

Утилизация пула по расписанию

В оснастке IIS: «Пулы приложений» → ваш пул → «Параметры утилизации». Доступны варианты:

  • по интервалу времени;
  • в конкретное время суток;
  • по превышению лимита виртуальной или закрытой памяти.

Для 1С разумно выбрать ночное время вне рабочих часов и лимит по памяти, чтобы зависший процесс не раздувался днём.

Задача в планировщике

Простой вариант на Windows — запуск скрипта по расписанию через «Планировщик заданий». Скрипт на PowerShell:

Import-Module WebAdministration
$state = (Get-WebAppPoolState -Name "DefaultAppPool").Value
if ($state -ne "Started") { Start-WebAppPool -Name "DefaultAppPool" }

Запускайте его раз в несколько минут: он поднимет пул, если тот остановился. Ночной полный перезапуск лучше делать отдельной задачей.

На Linux: cron и systemd

Для Apache подойдёт cron:

0 4 * * * systemctl reload apache2

Здесь reload в 4 утра: он безопасно перечитывает конфигурацию. Если нужна именно остановка, замените на restart.

Чтобы Apache сам поднимался после сбоя, в юните службы можно задать Restart=on-failure. Правьте юнит через systemctl edit apache2, а не файл в /lib.

Мониторинг

Достаточно внешней проверки адреса базы: запрос раз в минуту и оповещение, если ответа нет или приходит 5xx. Такая проверка заметит зависание раньше, чем позвонят пользователи.

Перед плановым перезапуском веб-сервера
Выполнено: 0 / 6

Частые вопросы

Перезапуск веб-сервера прерывает работу в толстом клиенте?
Нет. Толстый и тонкий клиент подключаются к серверу 1С напрямую, веб-сервер им не нужен. Прервутся только веб-клиент, HTTP-сервисы и всё, что идёт через публикацию.
Чем `iisreset` отличается от перезапуска пула?
iisreset перезапускает всю службу IIS и все сайты. Перезапуск пула затрагивает только приложения, привязанные к нему. Для 1С чаще хватает пула.
Нужно ли пересоздавать публикацию после перезапуска?
Нет, перезапуск её не удаляет. Перепубликация нужна после обновления платформы или при потере файла default.vrd.
Как понять, что завис именно веб-сервер, а не сервер 1С?
Попробуйте подключиться толстым клиентом. Если работает, а в браузере пусто, виноват веб-сервер. Если не работает ни там ни там, смотрите службу сервера 1С.
Можно ли перезапускать веб-сервер в рабочее время?
Можно, если вы готовы к обрыву веб-сессий. Выберите утилизацию пула: она аккуратнее остановки и обычно проходит незаметно.