Как «перезапустить» сервер приложений 1С

Иногда сервер приложений занимает всю память и ее надо освободить.

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

Есть возможность перезапустить рабочие процессы сервера приложений без заверешния работы пользователей.

Для этого в консоли сервера выбираем процесс, который занял больше всего памяти и открываем его свойства.

В свойствах процесса указываем Использование = Не использовать. Нажимаем ОК.

Без паники. Все сеансы пользователей автоматически перейдут на другие рабочие процессы. Проверено на практике (много раз).

Дожидаемся, пока процесс не завершится:

Примечание: сеанс Конфигуратора не переносится с процесса на процесс.

После этого повторяем обратную операцию. Открываем свойство остановившегося рабочего процесса, указываем Использование = Использовать.

Ждем. При первом подключении выделяется память:

Все. Память освободилась. Начинается новая жизнь.

Также можно настроить автоматический перезапуск сервера.

33 Comments

  1. alexex

    это делает намного проще. В кластере устанавливаем порог допустимого объема памяти см. приложение.

    +

    Упустил главный момент необходимо поставить «Интервал превышения допустимого объема памяти __ секунд»

    p.s. Работает как часы, версия платформы 8.2.15.310

    Выдержка из документации:

    Интервал перезапуска __ секунд

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

    Допустимый объем памяти __ KB

    Устанавливает предельный объем виртуального адресного пространства, после постоянного превышения которого в течение определенного времени (см. следующий параметр) рабочий процесс будет автоматически перезапущен. Нулевое значение означает, что критический объем памяти не задан и автоматический перезапуск рабочих процессов не выполняется.

    Интервал превышения допустимого объема памяти __ секунд

    Определяет интервал времени постоянного превышения предельного объема виртуального адресного пространства, занимаемого рабочим процессом (см. предыдущий параметр), после которого выполняется автоматический перезапуск рабочего процесса. Нулевое значение означает, что автоматически перезапуск рабочих процессов не выполняется.

    Reply
  2. DERL

    Спасибо!

    Возьмем на зметку 🙂

    Reply
  3. adhocprog

    (1) спасибо 🙂

    Reply
  4. squad

    Методом пользуемся, когда нужно перезапустить рабочий процесс с зависшими фоновыми заданиями.

    Все пользовательские сессии перебрасываются на другой рабочий процесс, а этот («зависший») убивается в диспетчере задач (для этого нужно в его колонках вывести PID процесса, а в свойствах рабочего процесса 1С посмотреть этот самый PID).

    Reply
  5. Alex_Japanese_Student

    (1) alexex,

    спасибо, будем пробовать

    Reply
  6. ak0710

    Сейчас проверил у себя , только один рабочий процесс, как сделать чтобы было больше ?, если завершу то точно все юзверы отключаться

    Reply
  7. echo77

    (6) Посмотрите в желто-оранжевой книжке по особенностям 1С в клиент-серверном варианте

    Reply
  8. squad

    (6) hamlo_666,

    В консоли администрирования: Кластеры-<ваш кластер>- Рабочие серверы-<ваш кластер>- Рабочие процессы — Добавить

    Reply
  9. ravsan

    Изменять настройку рабочих процессов без последующего перезапуска службы 1С влечет за собой кучу проблем у пользователей, проверено на практике :). Поиграться конечно можно, но перезапуск службы в конечном итоге обязателен.

    Reply
  10. adhocprog

    (9) конкретно какие проблемы?

    Reply
  11. ravsan

    Вот нашел, начались сыпаться вот такие ошибки (УПП, в базе находилось примерно 200 пользователей):

    1. При записи какого либо объекта, в данном примере, документа «Заявка на расходвание средств»:

    Ошибка при выполнении обработчика — ‘ПередЗаписью’

    по причине:

    {ОбщийМодуль.ПроцедурыОбменаУПП.Модуль(884)}: Ошибка при получении значения атрибута контекста (НаличиеОбменаУПП)

    по причине:

    Попытка получения неинициализированного значения параметра сеанса

    2. При входе в систему сразу выдавала ошибку: «Таблица не найдена «Справочник.Пользователи»….. и кнопка «Завершить работу»

    Раньше таких ошибок не возникало, началось именно после того, как мы добавили наживую рабочие процессы.

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

    И в инсрукции к серверу явно написано нужно перезапускать, но как всегда начинаешь их читать когда уже проблемы возникли.

    Reply
  12. adhocprog

    (11) спасибо!

    Reply
  13. NFF

    (11) ravsan, Это была платформенная ошибка в 8.2.14 или 8.2.15 1С-ки её исправили

    И в инсрукции к серверу явно написано нужно перезапускать

    если не сложно напишите где, я такого не встречал.

    Использую методику из первого поста 2 мес. полет нормальный. 350 активных пользователей.

    Reply
  14. ravsan
    NFF, Это была платформенная ошибка в 8.2.14 или 8.2.15 1С-ки её исправили

    Стояла платформа 8.2.14.519, согласен, очень может быть что проблема в ней.

    Reply
  15. EarlyBird

    Спасибо участникам за комменты, чрезвычайно познавательное обсуждение.

    Reply
  16. kapustinag

    (1) alexex,

    Наверно, не на всех версиях платформы это свойство ведет себя так, как описано в документации.

    У нас на платформе 8.2.13.289 и .14.540 процессы продолжали жить с памятью, превышающей установленное пороговое значение, и при этом никакие сеансы пользователей не перемещались на другие процессы.

    Reply
  17. Invaa

    на платформе 8.2.14.537 есть глюки

    А вот, что пишут 1С по этому поводу:

    10096672 Попытка получения неинициализированного значения параметра сеанса

    Проблема:

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

    Попытка получения неинициализированного значения параметра сеанса

    Дата публикации:

    2012-01-19

    исправлено в 8.2.15.301

    Reply
  18. Dimasik2007

    Не когда бы не подумал, что инфостарт докатиться до подобных статей, которые расписаны в любом руководстве…

    Или инструкции читать сейчас не в моде?

    Reply
  19. Serj1C

    (18) Dimasik2007, ладно вам. эта статья довольно полезная, особенно комменты. в частности (4)

    Инфостарт «докатился». кучу публикаций даже не возникает желание открыть.

    Reply
  20. Den_D

    (19) Serj1C, (18) Dimasik2007,

    Не когда бы не подумал, что инфостарт докатиться до подобных статей

    так происходит со всеми ресурсами по мере нарастания их популярности

    Reply
  21. TitanLuchs

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

    Reply
  22. Silenser

    (20) Den_D,

    Собственно, в отсутствии популярности, ресурс загибается. Нужен баланс.

    Reply
  23. valery_ok

    (22) Silenser,

    как собственно и в рабочих процессах сервера 🙂

    Reply
  24. Trotter_NN

    Вопрос нуба:

    что это на картинках и где про это почитать можно ?)))

    Reply
  25. adhocprog

    (24) это сервер приложений 1С. Первоисточник — это документация 1С.

    Reply
  26. kuza_87

    С недавнего времени тоже стал рабочие процессы убивать. Удобно и практически без последствий!

    Reply
  27. ArtfulCrom

    Прекрасный метод. Репетируем его с 1С еще с 8.2.9…. до сих пор (8.3.ххх) не работает корректно. Когда реально промышленные масштабы — сходит с ума и валится так, что потом фиг поднимешь…

    Хотя конечно многое уже поправили, но ИТОГО не работает. Так что будьте осторожны )

    ЗЫ. Кстати задумано так, что отключать можно даже один процесс. Система должна автоматом создать НОВЫЙ и перекинуть на него юзеров, не срабатывает. Не всегда.

    ЗЗЫ: Автоматический перезапуск — оказался фигней. У вас 20-30 процессов. Они ОДНОВРЕМЕННО достигают таймаута и ОДНОВРЕМЕННО создав свои клоны отрубаются. Но пока происходит переключение у вас 40-60 активных процессов — система сходит с ума и падает.

    ЗЗЫ: автоматически по превышению — не работает — балансировка нагрузки приводит к тому, что процессы ПРАКТИЧЕСКИ одновременно достигают придела памяти — дальше происходит коллапс из предыдущего варианта.

    Так, что пользуйтесь, но бойтесь ))

    Reply
  28. Sergoninfostarru

    Ручное управление — прямая дорога 1С-ку к превращению в периферию сервера приложений. Нужен автоматический процес — cmd или bat файл.

    Reply
  29. adhocprog

    (28) так уже написано же http://raw8.ru/not-enough-free-memory-on-1c-enterprise-server/

    Reply
  30. Sergoninfostarru

    Где в логах можно увидеть перезапуск сервера приложений в автоматическом режиме?

    Откуда знать, что перезапуск произошел успешно? Кстати, сам MS SQL Server постепенно увеличивает объем памяти в рабочих процесах во время работы. Поэтому остановки/перезапуска только Агента 1С недостаточно — нужно останавливать SQL Server.

    Reply
  31. adhocprog

    >> Где в логах можно увидеть перезапуск сервера приложений в автоматическом режиме?

    Хороший вопрос. Надо поискать.

    >> Кстати, сам MS SQL Server постепенно увеличивает объем памяти в рабочих процесах во время работы.

    «Рабочие процессы» это понятие сервера приложений 1С.

    Понятно, что у SQL своя память и за ней тоже можно следить и управлять. Здесь речь только про сервер приложений.

    >> Поэтому остановки/перезапуска только Агента 1С недостаточно — нужно останавливать SQL Server.

    Это за рамками данной публикации.

    Reply
  32. cmd_vasec

    а как данный момент реализуется в 8.3.5 ?

    Reply
  33. 1v7

    (32) cmd_vasec, тоже неделю назад столкнулся. здесь описано: http://1cnik.by/server1crphost.html

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *