Об агентах по расписанию

  • Автор темы Eugenus
  • Дата начала
E

Eugenus

#1
Привет всем! Кто силен в теории, подскажите, как ведет себя Domino случае периодического запуска агента, который не успевает отрабатывать ко времени повторного запуска ? Ставит в очередь и дожидается отработки либо запускает сразу агент в отдельном потоке ?
У меня есть кусок кода, который принудительно запускает агент через каждые 30 секунд, который далеко не всегда успевает отработать за этот интервал, при этом нагрузка на сервер вроде бы остается постоянной и вообще все работает замечательно. Такое впечатление, что домино завершает работу недовыполнившегося агента и запускает его по новой. А вы что думаете по этому поводу ?
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 233
18
#2
а причем тут агент по расписанию то, если его на деле другой агент запускает принудительно?
по правильному агент должен отрабатываться и запускаться сам, спустя время после своего завершения он должен опять запускаться
если же его постоянно пинает другой агент то необходимо учесть эту логику и заставлять агент заканчиваться если он не уложился в дозволенное время, иначе потом дважды запущенный агент будут вдвоём тер*цензура*ить один и тот же док - и посыпется ваша логика
 
E

Eugenus

#3
Полегче) Ничего не посыпется....Я вот тут всего лишь интересовался - действительно ли агент завершается, если его пинают повторно ?
А если просто подходит его время запуска - дожидается ? Что-то я сомневаюсь насчет лотусной многопоточности...
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 233
18
#4
Полегче) Ничего не посыпется....Я вот тут всего лишь интересовался - действительно ли агент завершается, если его пинают повторно ?
А если просто подходит его время запуска - дожидается ?
зависит от очереди агентов и количество одновременных потоков
если у вас 2 и более потока AMGR то есть вероятность, что агенты начнут работать паралельно, так как может получится ситуацию когда в очереди агент за агентом и пойдёт одновременный запуск
если агентменеджер лишь один то будет "дождаться" но минус в том, что очередь агентов будет разгружаться медленно
 
E

Eugenus

#5
Сорри, насчет агент менеджер - это ведь серверная задача, как их может быть несколько ? Это где-то настраивается ?
 
E

Eugenus

#6
Вообще у меня есть основания предполагать, что при принудительном запуске агент менеджер не ставит выполнение в очередь, а перезапускает агент в одном-едиственном потоке. Мой агент несколько раз лопатит коллекцию документов в цикле и почему-то иной раз существенно подтормаживает на взятии тех либо иных доков, не укладываясь в отведенный пятиминутный интервал....При повторном запуске вся коллеция быстро проходит обработку. Если бы имела место неограниченная многопоточность, нагрузка на сервер возросла бы неимоверно, если бы AMGR ставил их в очередь - принудительный запуск был бы до одного места, очередь бы разгружалась медленно, как и заметил тОха. Но налицо совсем иное - такое впечатление, что агент просто перезапускается. При этом не суть важно, отработает ли агент всю коллецию до конца либо остановится на каком-то доке, поскольку неотработанные доки подхватятся на следующем запуске, важно лишь, чтобы он не застревал на середине обработки какого-то дока, внеся в него какие-либо изменения, которые сделают невозможной дальнейшую работу с ним при след. запуске. Но в моих скриптах это исключено и по тьфу-тьфу, пока все работает стабильно...
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 233
18
#7
Eugenus
это вам так кажется, и как вы проверяли нагрузку на сервер то?
подозреваю что колекцию вы формируете db.Search а значит одновременное срабатывание нескольких агентов на сече приведет к их резкому замедлению работы - проверял ни один раз, суть в том, чтобы выполнить сечь нужно прошуршать винтами, а проверить нагрузку на винты можно лишь через очередь I/O ни проц ни озу в єтом подходе не задействованы вообще
вот и получается что два одновременных сеча приведут к задержке в 10 мину, а если их запустить последовательно то каждый отработает секунд за 5

если бы они отрабатывали последовательно то "и почему-то иной раз существенно подтормаживает на взятии тех либо иных доков" - вот этого бы никогда не было, а так вы просто забили операции I/O на максимум
 
E

Eugenus

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

TIA

:-)
Lotus team
15.05.2009
790
3
#9
У меня есть кусок кода, который принудительно запускает агент через каждые 30 секунд, который далеко не всегда успевает отработать за этот интервал, при этом нагрузка на сервер вроде бы остается постоянной и вообще все работает замечательно. Такое впечатление, что домино завершает работу недовыполнившегося агента и запускает его по новой. А вы что думаете по этому поводу ?
Домино сама принудительно завершает агента только по истечению максимального времени отведённого на работу агентов. По-умолчанию, кажется, 15 мин. Это время можно изменить через notes.ini. В других случаях, в частности по истечению интервала запуска, Домино агента не прерывает.
Агент который запускает другой агент, запускает второй агент в отдельном потоке? Если нет, тогда первый агент будет ждать завершения второго.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 233
18
#10
Не использую серчь, коллеция берется из индексированного по первому столбцу представления. Подтормаживание иногда происходит на последовательной инициализации доков из коллекции. Впрочем, ладно...Нужно будет перед завершением агента включить вывод контрольй инфы с датами в текстовый файл, вот тогда и проверю, всякий раз агент отрабатывает или нет...
достаточно начиная с 7ки поставить в агенте галочку - Agent Profiler и там будет подробная статистика по вызовам и их таймингам
Подтормаживание иногда происходит на последовательной инициализации доков из коллекции - а это что не обращение к диску? :facepalm:
 

Xalet

Well-known member
08.08.2008
410
0
#11
Сорри, насчет агент менеджер - это ведь серверная задача, как их может быть несколько ? Это где-то настраивается ?
Вопросик без ответа. Мне тоже интересно, можно ли настраивать?

А если агенты по расписанию отрабатывают, то непременно дождутся окончания работы уже запущенного?

А еще слышал про ограничение по колличеству агенотов в базе. Если больше 8, а-мнгр начинает глючить(в 6ке). Так ли это?
 

TIA

:-)
Lotus team
15.05.2009
790
3
#12
Вопросик без ответа. Мне тоже интересно, можно ли настраивать?
В серверном names.nsf в документе на сервер закладке "ServerTasks\AgentManager" поле "Max concurrent agents"
Влияет на количество процессов namgr.exe. В рамках одного процесса одновременно может выполняться только 1 агент.

А если агенты по расписанию отрабатывают, то непременно дождутся окончания работы уже запущенного?
Не знаю как сейчас, но в 5ке в одной БД одновременно мог запускаться только 1 шедульный агент. Перед запуском очередного предыдущий должен быть завершён.

А еще слышал про ограничение по колличеству агенотов в базе. Если больше 8, а-мнгр начинает глючить(в 6ке). Так ли это?
Фигня