Имя: Пароль:
1C
 
Автоматический перезапуск рабочих процессов на сервере предприятия
0 Шляпентох
 
25.03.10
08:08
Доброго времени суток.
1С 8.1.15.14, клиент-серверный вариант. SQL Server и сервер приложений установлены на одном сервере.
Подскажите, пожалуйста, как сделать так чтобы рабочие процессы (а их 8 штук) автоматически перезапускались?
В теме v8: Остановка службы 1С:Предприятие при расчете итогов. я писал, что они у меня и так перезапускаются, но, похоже, сильно ошибался.
Последний раз сервер перезапускался 17-го февраля и сейчас два рабочих процесса жрут по 900 МБ, три по 700 МБ и оставшиеся три по 500. На момент запуска сервера каждый из них довольствовался 150-250 МБ. Пока, вроде бы, проблем не видно, но как только SQL Server хочет взять больше памяти, процессы rphost начинают активно свопиться, что меня мало радует..
В консоли, естественно, установленно время перезапуска рабочих процессов.. В моем случае это 24*60*60 = 86 400 секунд. Смотрю в свойствах рабочих процессов - время запуска "17.02 18:45...".
Как проверить - перезапускаются они на самом деле или нет?
1 Serg_1960
 
25.03.10
09:36
(нагуглил) http://users.v8.1c.ru/Adm1985.aspx

Настройка кластера:


1. Много процессов - ставим галочку.
2. Защищенное состояние - выключено
3. Рабочие процессы перезапускать через 86400
4. Выключенные процессы останавливать через 86400
5. Нажимаем кнопку "Применить"
6. Добавляем процессы(если нужно, Рабочие серверы-Процессы-Создать процесс)
7. Останавливаем клиента.
8. Убиваем в памяти все "зависшие" процессы.
9. Запускаем клиента.


Если не помогло :) батник в планировщик один раз в сутки ночью:

net stop "1C:Enterprise 8.1 Server Agent"
taskkill /IM rphost.exe /f
net start "1C:Enterprise 8.1 Server Agent"
2 Шляпентох
 
25.03.10
10:06
Спасибо за ответ.
По настройкам так и сделано, только, увы, не помогает. А батником не получится - люди и ночью работают..
Сейчас подумал, что, возможно, пользовательские соединения и мешают перезапуску процессов, но тогда заявленный функционал абсолютно бесполезен, по крайней мере в данном случае.
3 fisher
 
25.03.10
10:23
Гы! А я наоборот - перезапуск не настраивал только потому, что боялся отстрела работающих процессов :)
4 Vitello
 
25.03.10
10:43
(2)Сейчас подумал, что, возможно, пользовательские соединения и мешают перезапуску процессов,

так ес-но.
перезапускается только если подключений нет.
5 Шляпентох
 
25.03.10
11:16
(3) А я надеялся, что есть какой-нибудь механизм передачи соединений между процесаам в пределах одного кластера серверов.. Но (4) меня в этом разубедил.
6 fisher
 
25.03.10
11:27
(5) 8.2 такое вроде умеет.
7 ОчкарикСлава
 
25.03.10
11:31
В чем вопрос, всё же реализовано штатно в 8.1

Курите настройки кластера! сервера.
Два параметра. Презапускать процессы...
Выключенные процессы переостанавливать...
8 ОчкарикСлава
 
25.03.10
11:33
Перезапускать 345600
Останавливать 43200

Всё работает....
9 Serg_1960
 
25.03.10
11:45
(8) Круглосуточный режим работы пользователей? Если "нет" - свободен :)
10 strange2007
 
25.03.10
11:47
Руки не доходят автоматизировать перезапуск процессов тоже. Руками делаю по одному "не использовать", после того как все перейдут на другие процессы, перезапускаю его. И так по очереди все перезапускаю. Ни в коем случае не перезапускать процессы с пользователями!!!!!!
Написать автоматизатор пару часов (с перекуром и чаепитиями). Наверное лень
P.S. 1С: 8.2
11 Serg_1960
 
25.03.10
11:57
(0) Попробуй подбором значений "перезапускать" и "останавливать" добиться перезапуска процессов. Установи меньшие значения. Если начнутся ошибки типа "...удаленный хост принудительно разорвал существующее подключение..."  - увеличивай значения. И да, кстати: значение "останавливать" устанавливай меньше значения "перезапускать".
12 Vitello
 
25.03.10
12:00
(11)Сложно это сделать однако :)

Если на тестовой базе - надо будет эмулировать нагрузку
Если на рабочей - получишь мизды...
13 Шляпентох
 
25.03.10
12:43
(12) это верно.. за разрывы соединений получу..
Спасибо за ответы. Будем думать (:
14 ОчкарикСлава
 
25.03.10
13:27
(13) она аккуратно предлагает юзеру перезапустить сеанс работы.
Если время сеанса подошло к концу. Что здесь криминального?  за что можно получить.

вот код:


   #Если Клиент Тогда
       НеобходимостьЗавершенияСоединения = НеобходимостьЗавершенияСоединения();
       Если НеобходимостьЗавершенияСоединения.НеобходимоЗавершить Тогда
           ТекстСистемногоСообщения = "Необходимо завершить соединение с сервером с перезапуском сеанса.";
           ЗаписатьСистемноеСобытие(ТекстСистемногоСообщения, Истина);
           
           Если глТекущийПользователь.би_Служебный Тогда
               ТекстСистемногоСообщения = "Начат процесс автоматического перезапуска системы...";
               ЗаписатьСистемноеСобытие(ТекстСистемногоСообщения, Истина);
               ЗавершитьРаботуСистемы(Ложь, Истина);
           Иначе
               
               Сообщить("Необходимо завершить соединение с сервером с перезапуском сеанса.");
               Ответ = Вопрос("Администратором сервера 1С:Предприятие или Сервером 1С:Предприятие
               |установлен режим принудительного перезапуска всех клиентских подключений.
               |Соединеие будет разорвано."
               + Символы.ПС + "Сохранить данные и перезапустить программу сейчас?", РежимДиалогаВопрос.ДаНет, 45);
               
               
               
               Если Ответ = КодВозвратаДиалога.Да Тогда
                   ЗавершитьРаботуСистемы(Истина, Истина);
               Иначе
                   ТекстСистемногоСообщения = "Пользователь отказался перезапускать систему. Возможна потеря несохраненных данных.";
                   ЗаписатьСистемноеСобытие(ТекстСистемногоСообщения, Истина);
               КонецЕсли;
               
           КонецЕсли;
       Иначе    
           
           
       КонецЕсли;
   #КонецЕсли


в модуле приложения